Zurück zu: SQL Tutorial
Innerer Join
Das Schlüsselwort INNER JOIN
wählt Datensätze aus, die in beiden Tabellen übereinstimmende Werte aufweisen.
Schauen wir uns eine Auswahl aus der Produkttabelle an:
ProduktID | Produktname | KategorieID | Preis |
---|---|---|---|
1 | Chais | 1 | 18 |
2 | Chang | 1 | 19 |
3 | Aniseed Syrup | 2 | 10 |
Und eine Auswahl aus der Kategorientabelle:
KategorieID | Kategoriename | Beschreibung |
---|---|---|
1 | Getränke | Erfrischungsgetränke, Kaffee, Tee, Bier und Ale |
2 | Gewürze | Süße und herzhafte Saucen, Relishes, Brotaufstriche und Gewürze |
3 | Süßwaren | Desserts, Süßigkeiten und süßes Brot |
Wir verknüpfen die Tabelle „Products“ mit der Tabelle „Categories“, indem wir das Feld „CategoryID
“ aus beiden Tabellen verwenden:
Beispiel
Verbinden Sie Produkte und Kategorien mit dem Schlüsselwort INNER JOIN:
SELECT ProductID, ProductName, CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;

Hinweis: Das Schlüsselwort
INNER JOIN
gibt nur Zeilen zurück, die in beiden Tabellen übereinstimmen. Das bedeutet, dass ein Datensatz im Ergebnis nicht zurückgegeben wird, wenn Sie ein Produkt ohne CategoryID oder mit einer CategoryID haben, die in der Tabelle „Categories“ nicht vorhanden ist.
Syntax
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
Benennen der Spalten
Es empfiehlt sich, beim Angeben von Spalten in der SQL-Anweisung den Tabellennamen mit einzuschließen.
Beispiel
Geben Sie die Tabellennamen an:
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;
Das obige Beispiel funktioniert ohne Angabe von Tabellennamen, da keiner der angegebenen Spaltennamen in beiden Tabellen vorhanden ist. Wenn Sie versuchen, CategoryID
in die SELECT
Anweisung aufzunehmen, erhalten Sie eine Fehlermeldung, wenn Sie den Tabellennamen nicht angeben (da CategoryID
in beiden Tabellen vorhanden ist).
JOIN oder INNER JOIN
JOIN
und INNER JOIN
geben dasselbe Ergebnis zurück.
INNER
ist der Standard Jointyp für JOIN
. Wenn Sie also JOIN
schreiben, schreibt der Parser tatsächlich INNER JOIN
.
Beispiel
JOIN ist dasselbe wie INNER JOIN:
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
JOIN Categories ON Products.CategoryID = Categories.CategoryID;
Join Three Tables
Die folgende SQL Anweisung wählt alle Bestellungen mit Kunden- und Versenderinformationen aus:
Hier ist die Versendertabelle:
VersenderID | ShipperName | Telefon |
---|---|---|
1 | Speedy Express | (503) 555-9831 |
2 | United Package | (503) 555-3199 |
3 | Federal Shipping | (503) 555-9931 |
Beispiel
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);