====== Inner Join ====== Der Inner Join basiert auf dem Cross Join, allerdings kann man hier eine Auswahl treffen, welche Zeilen verbunden werden sollen. ===== Syntax alt ===== SELECT ... FROM Tabellenname1 [Alias], Tabellenname2 [Alias] WHERE ... --meist Tabellenname1.nummer = Tabellenname2.nummer ===== Syntax neu ===== Beim "neuen" Inner Join gibt es 3 Arten: * ON Klausel * USING Klausel * NATURAL JOIN ==== ON Klausel ==== SELECT ... FROM Tabellenname1 [Alias] INNER JOIN Tabellenname2 [Alias] ON Vergleich --Vergleich könnte z.B. Tabellenname1.Wert = Tabellenname2.Wert sein ==== USING Klausel ==== SELECT ... FROM Tabellenname1 [Alias] INNER JOIN Tabellenname2 [Alias] USING(Spaltenname) Wichtig dabei ist, dass der Spaltenname im USING in beiden Tabellen existiert. ==== NATURAL JOIN ==== Der NATURAL JOIN ist ein Spezialfall der USING-Klausel. Bei ihm werden alle Spalten beider Tabellen auf Gleichheit überprüft. SELECT ... FROM Tabellenname1 [Alias] NATURAL JOIN Tabellenname2 [Alias] ===== Spezialfall - Self Join ===== Bei einem Self Join wird eine Tabelle mit sich selbst verknüpft. Das heißt, sie steht sowohl links als auch rechts von INNER JOIN. ====== Beispiele ====== {{:dbs:sql:abteilung_mitarbeiter_blau.png?direct&|}} Die Aufgabenstellung ist für ON und USING die gleiche. Zeige von jedem Mitarbeiter den Namen und die Abteilung an, in der er arbeitet. ===== Beispiel ON Klausel ===== SELECT Name, Abteilungsname FROM Mitarbeiter m INNER JOIN Abteilung a ON m.Abteilungsnummer = a.Abteilungsnummer ===== Beispiel USING Klausel ===== SELECT Name, Abteilungsname FROM Mitarbeiter m INNER JOIN Abteilung a USING (Abteilungsnummer)