habe ich mich gefragt, ob sich die Ergebnisse in Abfragen mit mehreren Join-Tabellen ändern würden.SQL-Logik: Beim Verbinden der untergeordneten Tabelle B mit der übergeordneten Tabelle A von A.FID = B.ID
Wenn Sie übergeordnete Tabelle haben A
A B
ID|FID FID
1|2 1
2|4 2
3|5 3
4|7 4
5|8 5
6|NULL 6
7|NULL 7
8|NULL 8
macht es aus, welcher Tabellenspalte in der WHERE-Klausel angegeben? Zum Beispiel, was ist der Unterschied zwischen den beiden:
Select *
From Table A
Left Join B on A.FID = B.FID
WHERE A.FID IN (2,5,8)
Select *
From Table A
Left Join B on A.FID = B.FID
WHERE B.ID IN (2,5,8)
Sie für die Hilfe danken!
EDIT: Micheal meine Frage gelöst hat, und ich habe es
‚Eigentlich erprobt, während Sie Ihre Antwort ein gutes (und wahrscheinlich das, er sucht) ist, da seine beiden Abfragen im Wesentlichen sind Filterung auf dem Primärschlüssel von B (A.FID, B.ID) sind sie tatsächlich logisch identisch (unter der Annahme, dass A.FID eine echte Fremdschlüsselbedingung für B ist). Das heißt, beide Abfragen filtern Zeilen aus, in denen B.ID nicht 2, 5 oder 8 ist. - Michael L.
Es ist nur anders Tabelle B die Haupttabelle ist und abgefragten Sie basieren auf B.ID wie in:
SELECT *
FROM B
LEFT JOIN A ON A.FID = B.FID
WHERE B.FID IN (2,5,8)
Während dies die gleichen A als Haupttabelle sein wird, wie mit :
SELECT *
FROM B
LEFT JOIN A ON A.FID = B.FID
WHERE A.FID IN (2,5,8)
haben Sie es versucht? –
Mögliche Duplikate von [SQL JOIN und verschiedene Arten von JOINs] (http://Stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joins) –