Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/04/2008, 14:25
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Re: Es confiable el Enterprise Manger?

Me parece que es completamente confiable.
Lo que te recomiendo es que analices la lógica de tu consulta.

Código:
SELECT {columnas}
FROM    outer_table
LEFT JOIN inner_table
         ON  {campos para vincular ambas tablas} 
         AND {condiciones inner_table}
WHERE {condiciones outer_table}
Si las condiciones aplican a la tabla que está después de la sentencia LEFT JOIN (inner table) es lógico que estén en el ON y no en el WHERE. Las condiciones en el WHERE aplican a la tabla que está antes de la sentencia LEFT JOIN (outer table).
¿Por qué es esto? Porque si pones las condiciones para la "inner table" en el WHERE los resultados pueden cambiar en caso de que existan valores nulos. ¿Cómo podrías diferenciar entre un nulo existente en la tabla de un nulo resultado de la operación LEFT JOIN?

En caso de que la operación sea INNER JOIN, poner la condición de la inner table después de la claúsula ON o de la cláusula WHERE es irrelevante. Pero para LEFT JOIN y RIGHT JOIN pueden devolver resultados incorrectos, como es el caso de tu query original y no del que pone las condiciones en el ON.