¿Hay alguna diferencia entre colocar predicados adicionales en una sentencia JOIN y agregarlos como cláusulas adicionales en la instrucción WHERE?T-SQL: predicados adicionales sobre JOINs frente a la cláusula WHERE
Ejemplo 1: predicado en la cláusula WHERE
select emp.*
from Employee emp
left join Order o on emp.Id = o.EmployeeId
where o.Cancelled = 0
Ejemplo 2: Predicado en la instrucción JOIN
select emp.*
from Employee emp
left join Order o on emp.Id = o.EmployeeId and o.Cancelled = 0
resultados correctos diferentes pueden ser devueltos, pero creo que lo que realmente necesita algunos datos de ejemplo que muestran esto. –
Sí, estaba tratando de evitar el uso de las palabras "correcto" o "incorrecto", porque en realidad son simplemente diferentes. Es posible que uno * quiera * solo devolver registros donde haya una fila correspondiente "derecha" con el predicado satisfecho. –
Si solo desea devolver registros donde hay una fila "derecha" correspondiente, se debe usar un JOIN (o INNER JOIN para usar la sintaxis completa). El uso de LEFT JOIN envía mensajes conflictivos a alguien que lee la consulta y no está claro qué se supone que está haciendo la consulta. – JonPayne