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.

Preguntas similare

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.


Respuesta Responder a este mensaje
#2 Luis Tarzia
09/12/2007 - 21:51 | Informe spam
Es un left
Por ejemplo
tabla a codigos
1
2
3
tabla b codigos
1 fecha mayor a getdate()
5 fecha igual
3 fecha menor a getdate()

la primer opcion trae 1,1 2 y null 3 y 3
y el where desestima la primera y deja la tercera

con la segunda opcion la tabla b queda con el 3 nada mas hace 1 null 2 null
y 3 3

"Penta" escribió en el mensaje
news:
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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida