====== SQL-JOIN ====== In relationalen [[Datenbanken]] lassen sich zwei oder mehr Tabellen mit einem JOIN verbinden. Die Präsentation mit einfachen Abfragen und Join erklärt das Verfahren. In [[http://www.schulserver.hessen.de/darmstadt/lichtenberg/SQLTutorial/lektion3.html|Lektion 3: Mit dem Join Tabellen verknüpfen]] ([[https://www.imoodle.de/sqltutorial/index.html|Mirror]]) wird das Verfahren für Tabellen aus einem Busunternehmen erläutert und mit Übungsaufgaben abgerundet. Das Video [[https://web.microsoftstream.com/video/78c22488-83fb-4485-acb9-c2c6bfd7faf6|SQL JOIN]] erläutert das Konzept noch einmal. Wir gehen von den beiden folgenden Tabellen aus (Primärschlüssel sind unterstrichen und Fremdschlüssel mit ↑ markiert) : * Fahrer(__PersonalNr__, Name, Vorname, StraßeNr, PLZ , Ort, Telefon) * Fahrt(__FahrtNr__, ↑PersonalNr, Kennzeichen, Datum, Preis, Dauer, Reisestart, Reiseziel) Mit einem JOIN wollen wir nun beide Tabellen über ihre Schlüsselfelder verbinden. - Wir wählen die erste Tabelle -> Fahrer \\ SELECT * \\ FROM Fahrer ... \\ \\ - Wähle nun ein zweite Tabelle, die an die erste Tabelle angefügt werden soll -> Fahrt \\ SELECT ... \\ FROM Fahrer \\ **INNER JOIN Fahrt** ...\\ \\ - Wie soll die Tabelle angefügt werde? Welche Fremd- und Primärschlüssel gehören jeweils zusammen? -> Fahrt.PersonalNr verweist auf Fahrer.PersonalNr \\ SELECT ... \\ FROM Fahrer \\ INNER JOIN Fahrt \\ **ON Fahrt.PersonalNr = Fahrer.PersonalNr** Wenn weitere Tabellen angefügt werden sollen, lässt sich der Prozess wiederholen. ===== Verschiedene Arten eines JOINs ===== Die folgende Grafik zeigt die unterschiedlichen Möglichkeiten, zwei Tabellen mit einem JOIN miteinander zu verbinden. {{:schule:sql_joins-visualisierung.jpg?direct|}} ===== Eigene Abfragen ===== Um zu prüfen, ob man SQL-Abfragen verstanden hat, hilft es, sich eigene Aufgaben mit einer Lösung zu überlegen. Formuliere nun eigene Fragen an die Nordwind-Datenbank. Erstelle jeweils eine Frage, die - einen Left- oder Right-Join benötigt - einen Self-Join benötigt - mindestens drei unterschiedliche Tabellen abfragt - eine Aggregatfunktion zur Lösung benötigt.