Utilisation de deux LEFT JOIN
s ie
SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
LEFT JOIN Table2 AS t3 ON <condition2>
est-ce la même chose que d'utiliser AND
en single LEFT JOIN
? c'est à dire
SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
AND <condition2>
Les deux sont identiques ou différents (en général)?
sql-server-2012
join
0x6773
la source
la source
Réponses:
Ils sont différents. Dans la première option, vous obtenez 2 fois
Table2
votre requête. Une fois commet2
et une fois commet3
. Les deux ont un contenu différent et vous devez les remettre ensemble. Pour moi, il s'agit plus d'un OU que d'un ET . Dans la deuxième option, vous obtenez uniquement lesTable2
lignes qui répondent aux deux critères.Supposons que vous ayez
Table2
le contenu suivant:Supposons que vous souhaitiez avoir les lignes qui sont
Blue
etS
. Dans votre première option, vous obtenez toutes les lignes (t2
par exemple avec tousBlue
ett3
avec tousS
) et dans votre deuxième option, vous obtenez uniquement la ligne 2.la source
Table1
ligne veut la couleur bleue et la taille S. Donc, la première jointure lui donne deuxTable2
correspondances, dupliquant ainsi laTable1
ligne, et la deuxième jointure donne deux correspondances pour chacune des copies, résultant ainsi en quatre lignes au total.