Mit zwei LEFT JOIN
s dh
SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
LEFT JOIN Table2 AS t3 ON <condition2>
ist das dasselbe wie AND
bei Single LEFT JOIN
? dh
SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
AND <condition2>
Beide sind gleich oder unterschiedlich (im Allgemeinen)?
sql-server-2012
join
0x6773
quelle
quelle
Antworten:
Sie sind anders. Bei der ersten Option erhalten Sie 2 Mal
Table2
in Ihre Abfrage. Einmal alst2
und einmal alst3
. Beide haben unterschiedliche Inhalte und Sie müssen sie irgendwie wieder zusammenfügen. Für mich ist dies eher ein ODER als ein UND . In der zweiten Option erhalten Sie nur dieTable2
Zeilen, die beide Kriterien erfüllen.Angenommen, Sie haben
Table2
folgenden Inhalt:Angenommen, Sie möchten die Zeilen
Blue
und habenS
. In Ihrer ersten Option erhalten Sie alle Zeilen (t2
zum Beispiel mit allenBlue
undt3
mit allenS
) und in Ihrer zweiten Option erhalten Sie nur Zeile 2.quelle
Table1
Zeile möchte die Farbe Blau und die Größe S. Der erste Join ergibt also zweiTable2
Übereinstimmungen, wodurch dieTable1
Zeile dupliziert wird , und der zweite Join ergibt zwei Übereinstimmungen für jede der Kopien, was insgesamt vier Zeilen ergibt.