Condicion en el Where

07/12/2007 - 17:56 por Penta | Informe spam
Estimados.
Utilizo SS2000 SP4.

Tengo una confusión.

Select * from Tabla A Left Join Tabla B
On a.cod=b.cod
Where b.fecha<getdate()

Resultado 0 registros


Select * from Tabla A Left Join Tabla B
On a.cod=b.cod and b.fecha<getdate()

Resultado 1 registro y esta esta bien.

Pero no logro entender porque motivo la primera no me trae los datos.

Atte.
Penta.
 

Leer las respuestas

#1 Gux (MVP)
07/12/2007 - 18:20 | Informe spam
En SQL Server el WHERE en un join afecta los resultados del join, que se
completa primero. Es decir, el WHERE filtra los resultados del join que se
calcula primero que nada.

No ha mostrado usted datos de prueba, pero seguramente

Select * from Tabla A Left Join Tabla B
On a.cod=b.cod

no obtiene tuplas con b.fecha<getdate() por lo cual, primero se calcula todo
el join y luego se hace el filtrado con el WHERE b.fecha<getdate()


Este artículo explica esos comportamientos:

Additional Criteria in the JOIN Clause
http://www.sqlteam.com/article/addi...oin-clause

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Penta" wrote:

Estimados.
Utilizo SS2000 SP4.

Tengo una confusión.

Select * from Tabla A Left Join Tabla B
On a.cod=b.cod
Where b.fecha<getdate()

Resultado 0 registros


Select * from Tabla A Left Join Tabla B
On a.cod=b.cod and b.fecha<getdate()

Resultado 1 registro y esta esta bien.

Pero no logro entender porque motivo la primera no me trae los datos.

Atte.
Penta.


Preguntas similares