Usando dos 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>
¿Es esto lo mismo que usar AND
en single LEFT JOIN
? es decir
SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
AND <condition2>
Ambos son iguales o diferentes (en general)?
sql-server-2012
join
0x6773
fuente
fuente
Respuestas:
Ellos son diferentes. En la primera opción, obtiene 2 veces
Table2
en su consulta. Una vez comot2
y una vez comot3
. Ambos tienen un contenido diferente y debes volverlos a juntar de alguna manera. Para mí, esto es más un OR en lugar de un AND . En la segunda opción, solo obtiene lasTable2
filas que cumplen ambos criterios.Supongamos que tiene
Table2
con el siguiente contenido:Suponga que desea tener las filas que son
Blue
yS
. En su primera opción obtiene todas las filas (t2
por ejemplo, con todasBlue
yt3
con todasS
) y en su segunda opción solo obtiene la fila 2.fuente
Table1
fila quiere color azul y tamaño S. Entonces, la primera unión le da dosTable2
coincidencias, duplicando así laTable1
fila, y la segunda unión da dos coincidencias para cada una de las copias, resultando en cuatro filas en total.