Hallo,
Ich habe mal eine Frage zum Inner Join in SQL. Gehen wir einmal davon aus, dass ich einen solchen über drei Tabellen realisieren möchte. Die Tabellen wären:
- Bestellung
- Bestellpositionen
- Artikel
Nun "Joine" ich die Tabelle "Bestellung" mit "Bestellpositionen".
C#-Quelltext
1: 2: 3:
| SELECT * FROM Bestellung b INNER JOIN Bestelpositionen bs ON b.bestnr = bs.bestnr; |
Nun möchte ich aber noch die Artikel "dazujoinen", also:
C#-Quelltext
1: 2: 3: 4: 5:
| SELECT * FROM Bestellung b INNER JOIN Bestelpositionen bs ON b.bestnr = bs.bestnr INNER JOIN Artikel a ON bs.artnr = a.artnr; |
Und genau zu diesem dritten Join habe ich jetzt eine Verständnisfrage. Bezieht dieser sich auf die temporäre Ergebnismenge (die derzeit durch den JOIN im DBMS vorhanden ist) aus
C#-Quelltext
1: 2:
| Bestellung b INNER JOIN Bestelpositionen bs ON b.bestnr = bs.bestnr; |
oder bezieht sich der Join auf die gesamten Grunddaten / Rohdaten aus den Datenbanktabellen "Bestellung" und "Bestellpositionen"? Ich meine joine ich bei mehreren INNER JOIN Anweisung immer auf die gerade vorhandenen temporären Daten aus dieser Anweisung mit vielen INNER JOINS (welche ja durch die ON Klausel auch entscheidend mit vorgegeben werden)? Also liefert der JOIN aus "Bestellung" und "Bestellposition" quasi die Datengrundlagen für den dritten JOIN mit der Tabellen Artikel und nicht die gesamten Daten aus den Tabellen "Bestellung" und "Bestellpositionen"?
Ich hoffe es halbwegs verständlich geworden, worauf ich hinaus möchte?
MFG
Kossy