JOINS y WHERE

26/03/2005 - 17:53 por Leopoldo Ramos | Informe spam
Hola a todos. Aqui de nuevo con mis dudas existenciales :))

En el caso en que en un query confluyan condiciones tanto para JOIN como
para WHERE, mi pregunta es si uno puede simplemente AGREGAR las condiciones
del WHERE con un AND a las condiciones del JOIN ???? o debe dejarse en el
join solo el encadenamiento y las demas condiciones que no son de
encadenamiento ponerlas en el where?

Ej.
Cual es la diferencia de estos dos selects ?

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk WHERE b.status=0

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk AND b.status=0


gracias.


Leopoldo

Preguntas similare

Leer las respuestas

#1 Maxi
26/03/2005 - 23:10 | Informe spam
Hola, el segundo query no hace lo mismo, para eos deberian existir de los 2
lados valores con 0, me expliico?
"Leopoldo Ramos" escribió en el mensaje
news:
Hola a todos. Aqui de nuevo con mis dudas existenciales :))

En el caso en que en un query confluyan condiciones tanto para JOIN como
para WHERE, mi pregunta es si uno puede simplemente AGREGAR las
condiciones
del WHERE con un AND a las condiciones del JOIN ???? o debe dejarse en el
join solo el encadenamiento y las demas condiciones que no son de
encadenamiento ponerlas en el where?

Ej.
Cual es la diferencia de estos dos selects ?

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk WHERE b.status=0

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk AND b.status=0


gracias.


Leopoldo


Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
26/03/2005 - 23:30 | Informe spam
No, no es necesariamente equivalente poner condiciones de join en la
cláusula JOIN o en la WHERE.

Puedes estudiar unos buenos ejemplos que muestran las diferencias que
hay, en la sección "Specifying Joins in FROM or WHERE Clauses" de los
Books Online (BOL).

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers no rights.



"Leopoldo Ramos" wrote in message
news::

Hola a todos. Aqui de nuevo con mis dudas existenciales :))

En el caso en que en un query confluyan condiciones tanto para JOIN como
para WHERE, mi pregunta es si uno puede simplemente AGREGAR las condiciones
del WHERE con un AND a las condiciones del JOIN ???? o debe dejarse en el
join solo el encadenamiento y las demas condiciones que no son de
encadenamiento ponerlas en el where?

Ej.
Cual es la diferencia de estos dos selects ?

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk WHERE b.status=0

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk AND b.status=0


gracias.


Leopoldo
Respuesta Responder a este mensaje
#3 Miguel Egea
26/03/2005 - 23:34 | Informe spam
En el caso que tu pones, no hay diferencia alguna, ambas devolverán siempre
el mismo número de filas en este otro no.

SELECT a.col1, b.* from a left JOIN b ON a.fk=b.pk WHERE b.status=0

SELECT a.col1, b.* from a leftJOIN b ON a.fk=b.pk AND b.status=0



En este caso la primera sentencia no devolverá ningún elemento en el que a
sea !=0, por lo que si vale null porque no se ha encontrado no se muestra,
en resumen se comporta como un inner join, mientras que el segundo se
comportará como realmente esperamos de un left join.

Saludos
Miguel Egea

"Leopoldo Ramos" escribió en el mensaje
news:
Hola a todos. Aqui de nuevo con mis dudas existenciales :))

En el caso en que en un query confluyan condiciones tanto para JOIN como
para WHERE, mi pregunta es si uno puede simplemente AGREGAR las
condiciones
del WHERE con un AND a las condiciones del JOIN ???? o debe dejarse en el
join solo el encadenamiento y las demas condiciones que no son de
encadenamiento ponerlas en el where?

Ej.
Cual es la diferencia de estos dos selects ?

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk WHERE b.status=0

SELECT a.col1, b.* from a INNER JOIN b ON a.fk=b.pk AND b.status=0


gracias.


Leopoldo



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida