Join
JOIN (VERBUND) Zusammenziehen der Informationen aus verschiedenen Tabellen
Der einfachste Verbund ist ein sogenannter "CROSS JOIN" bei dem das Ergebnis aus dem Kreuzprodukt der beteiligten Tabellen besteht. z.B.:
SELECT *
FROM Artikel, Lieferanten
Es gibt nur sehr, sehr wenige sinnvolle Anwendungen des "CROSS JOIN". Meistens entspringt dieser Join einen falschen Umsetzung einer Aufgabenstellung.
Der "CROSS JOIN" liefert als Ergebnis Kreuzprodukt der beteiligten Tabellen, also jede Zeile der beteiligten Tabelle wird mit jede Zeile der anderen Tabelle verknüpft. Das führt zu sehr großen Datenmengen und kann schon mal einen Server in die Knie zwingen.
Es ist deshalb notwendig das Kreuzprodukt auf eine bestimmte Teilmenge einzugrenzen.
Aufgabe:
Erstellen Sie eine Artikelliste mit ArtNr, Artikelbezeichnung und Name und Ort des jeweiligen Lieferanten.
Artikel |
||||
|---|---|---|---|---|
| ArtNr | Bezeichnung | Bestand | Preis | StammLief |
| 100 | Bohrer | 100 | 4,85 | 4711 |
| 101 | Pinsel | 210 | 7,60 | 3299 |
| 103 | Hammer | 17 | 8,30 | 4711 |
| 105 | Zange | 25 | 24,50 | 4711 |
| 110 | Kelle | 9 | 16,80 | 3000 |
| 111 | Gips | 200 | 9,60 | 2000 |
| 112 | Zement | 180 | 10,40 | 2000 |

SELECT ArtNr, Bezeichnung, Name, Ort
FROM Artikel, Lieferanten
WHERE Artikel.StammLief = Lieferanten.LiefNr
| Lieferanten | |||
|---|---|---|---|
| LiefNr | Name | Ort | ... |
| 2000 | Lederer AG | Berlin | |
| 2300 | Teufel & Co | Potsdam | |
| 3000 | Auf & Ab KG | Bernau | |
| 3299 | Trims OHG | Berlin | |
| 4700 | Bert & Kage | Berlin | |
| 4711 | Kugler GmbH | Kremmen | |
| 4800 | Aal & Söhne | Potsdam | |
SELECT ArtNr, Bezeichnung, Name, Ort
FROM Artikel INNER JOIN Lieferanten
ON Artikel.StammLief = Lieferanten.LiefNr
Beide SQL-Abfragen sind gleichwertig.
| ArtNr | Bezeichnung | Name | Ort |
|---|---|---|---|
| 100 | Bohrer | Kugler GmbH | Kremmen |
| 101 | Pinsel | Trims OHG | Berlin |
| 103 | Hammer | Kugler GmbH | Kremmen |
| 105 | Zange | Kugler GmbH | Kremmen |
| 110 | Kelle | Auf & Ab KG | Bernau |
| 111 | Gips | Lederer AG | Berlin |
| 112 | Zement | Lederer AG | Berlin |
Solange keine der verbundenen Tabellen NULL-Werte enthält sind Verbunde relativ unkompliziert zu handhaben. "Verbundspalten mit NULL-Werten" bergen erhebliche Probleme und benötigen besondere Abfragen.