SQL - Join con tres tablas

 
Vista:

Join con tres tablas

Publicado por Alex Amaya (1 intervención) el 12/08/2010 19:12:22
Buen dia caballeros, tengo un query con el que quiero que me muestre ciertos campos que una de las tablas no posee y recientemente conoci el inner join y decido a utilizarlo pero no me da los resultados deseados, espero su ayuda les dejo el query

SELECT a.VENDNAME, a.PONUMBER, a.DOCDATE, a.REQDATE, b.ITEMNMBR, b.ITEMDESC, b.QTYORDER, c.QTYSHPPD, (b.QTYORDER-c.QTYSHPPD), a.POSTATUS
FROM POP10100 a, POP10110 b

LEFT OUTER JOIN POP10500 c
on a.PONUMBER = c.PONUMBER

WHERE
b.ITEMNMBR=c.ITEMNMBR and
a.PONUMBER=b.PONUMBER and
a.REQDATE=b.REQDATE and
a.VENDORID=b.VENDORID and
b.VENDORID=c.VENDORID and
a.POTYPE=b.POTYPE and
b.LOCNCODE=c.TRXLOCTN and
b.ORD=c.POLNENUM

Gracias de antemano por todo ...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Join con tres tablas

Publicado por Leonardo Josue (1173 intervenciones) el 12/08/2010 22:59:57
Hola Alex Amaya, en tu post no mencionas qué manejador de base de datos utilizas, ni tampoco das una explicación de qué es lo que está mal con tu consulta, sólo mencionas que no obtienes los resultados esperados, pero esto qué significa... ¿marca algún error?, ¿te trae registros de más o de menos?, ¿no te arroja resultados?, ¿te hace alguna combinación que no sea correcta?

Debido a esto no estoy seguro de que lo que te voy a comentar sea lo que necesitas.

Veo que utilizas tres tablas, pero solo tienes un LEFT JOIN para dos de ellas, en tu cláusula WHERE tienes solo uniones de relación, pero no especificas cuál es la estructura de tus tablas ni sobre qué campos existen relaciones, pero tratando de adivinar un poco creo que las tablas a y b se relacionan con los campos PONUMBER, REQDATE, VENDORID y POTYPE y las tablas b y c mediante los campos ITEMNMBR, VENDORID, LOCNCODE-TRXLOCTN y ORD-POLNENUM (si falta alguna relación es cuestión de que la agregues).

Puedes intentar con esto, a ver que resulta

SELECT a.VENDNAME, a.PONUMBER, a.DOCDATE, a.REQDATE, b.ITEMNMBR, b.ITEMDESC, b.QTYORDER, c.QTYSHPPD, (b.QTYORDER-c.QTYSHPPD), a.POSTATUS
FROM
POP10100 a INNER JOIN POP10110 b ON
a.PONUMBER=b.PONUMBER and
a.REQDATE=b.REQDATE and
a.VENDORID=b.VENDORID and
a.POTYPE=b.POTYPE
LEFT JOIN POP10500 c ON
b.PONUMBER = c.PONUMBER and
b.ITEMNMBR=c.ITEMNMBR and
b.VENDORID=c.VENDORID and
b.LOCNCODE=c.TRXLOCTN and
b.ORD=c.POLNENUM

Ahora bien, el problema puede estar en el tipo de JOIN que estás utilizando, ya que existen LEFT JOIN, RIGTH JOIN, INNER JOIN Y FULL OUTER JOIN

checa esta página

http://es.wikipedia.org/wiki/JOIN

Creo que explica me manera clara cómo se comportan cada uno de los diferentes tipos de JOIN y si continuas teniendo problemas pues escribe otra vez en el post, pero trata de ser lo más descriptivo con tu problema.

Saludos.
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar