Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Doble Join entre tablas

Estas en el tema de Doble Join entre tablas en el foro de Mysql en Foros del Web. Hola, soy nuevo en esta cuestion del lenguaje sql, y necesito bastante ayuda. mi problema esta en lo siguiente: tengo las siguientes tablas: Código: tabla ...
  #1 (permalink)  
Antiguo 12/03/2009, 20:23
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Doble Join entre tablas

Hola,
soy nuevo en esta cuestion del lenguaje sql, y necesito bastante ayuda.
mi problema esta en lo siguiente:

tengo las siguientes tablas:
Código:
tabla compras

id
id_login
producto
fehca

tabla compra_producto

id
id_compra
tipo_pago
precio
archivo

tabla compra_servicio

id
id_compra
inicio_servicio
fin_servicio
precio
===================
quiero hacer un join desde la tabla de "compras" para crear una lista
de productos y servicios que adquirió el cliente.

intenté con esto :
Código:
select * from compras 
join compra_producto as prod on (compras.id = prod.id_compra)
join compra_servicio as serv on (compras.id = serv.id_compra)
funciona bien por serparado, pero al "unir" las tablas la salida de datos
es vacia cuando el usuario no está presente en alguna de las tablas de compras.

lo que deseo es listar todas las compras del usuario, en un mismo cuadro
y ordernarlo por fecha no importando la clase de producto.

espero puedan ayudarme.

muchas gracias.
  #2 (permalink)  
Antiguo 13/03/2009, 02:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Doble Join entre tablas

Prueba esto:

(SELECT c.producto PRODSERV, c.fecha FECHA FROM compras c INNER JOIN compra_producto cp ON c.id = cp.id_compra)
UNION ALL
(SELECT c.producto, c.fecha FROM compras c INNER JOIN compra_servicios cs ON c.id = cs.id_compra) ORDER BY FECHA
  #3 (permalink)  
Antiguo 13/03/2009, 18:13
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Doble Join entre tablas

WOW, funcionó perfectamente, me preguntaba si puedo molestarte con algo mas:

quisiera filtrar los resultados igualando el id_login de la tabla compras con el id de la tabla usuarios.

Muchas gracias por la ayuda (Y)
  #4 (permalink)  
Antiguo 14/03/2009, 01:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Doble Join entre tablas

Imagino que querrás sacar algo de la tabla usuarios además del id. Con esto sólo te mostrará el id. Yo te he puesto que muestre el id (u.id), pero podrías mostrar el nombre o algún otro dato escribiéndolo en el select.

(SELECT u.id, c.producto PRODSERV, c.fecha FECHA FROM compras c INNER JOIN compra_producto cp ON c.id = cp.id_compra INNER JOIN usuarios u ON u.id = cp.id_login)
UNION ALL
(SELECT u.id, c.producto, c.fecha FROM compras c INNER JOIN compra_servicios cs ON c.id = cs.id_compra INNER JOIN usuarios u ON u.id = cp.id_login) ORDER BY FECHA
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:04.