====== 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)