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

Select de 2 tablas dentro de una consulta a 3 tablas

Estas en el tema de Select de 2 tablas dentro de una consulta a 3 tablas en el foro de Mysql en Foros del Web. Hola a todos llevo todo el dia buscando algun ejemplo parecido a lo que quiero hacer y jugando con los Join pero no encuentro nada ...
  #1 (permalink)  
Antiguo 21/07/2012, 10:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 7
Antigüedad: 14 años, 11 meses
Puntos: 0
Select de 2 tablas dentro de una consulta a 3 tablas

Hola a todos

llevo todo el dia buscando algun ejemplo parecido a lo que quiero hacer y jugando con los Join pero no encuentro nada parecido.
Basicamente quiero seleccionar campos de 2 tablas mientras consulto a 3 tablas, mando las variables desde PHP, algo asi:

SELECT tabla1.dato1,tabla2.dato2 FROM tabla1,tabla2 WHERE tabla3.nombre="$variableX"

Si lo hago como:

SELECT tabla1.dato1,tabla2.dato2 FROM tabla1,tabla3 LEFT JOIN tabla2 ON tabla2.dato="$variableZ" WHERE tabla3.nombre="$variableX"
solo me salen productos cartesianos.

Lo que no sé como hacer es el acople de la tercera tabla, que es la que discrimina los datos que quiero seleccionar.

Además, pretendo que saque toda la información de t1 aunque t2 esté vacio y devuelva null, creo que para eso es suficiente con un LEFT JOIN por ahi.

Hayuda!!
  #2 (permalink)  
Antiguo 23/07/2012, 02:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select de 2 tablas dentro de una consulta a 3 tablas

Debes definir la relacion que tienen las tablas.

Código MySQL:
Ver original
  1. SELECT t1.campo1,t2.campo2
  2. FROM (tabla1 t1 LEFT JOIN tabla2 t2 ON t1.idT1=t2.idT1)
  3.                           ???? JOIN tabla3 t3 ON ???.???=t3.????
  4. WHERE t3.nombre="$variableX"
  5. AND (t2.dato="$variableZ" OR t2.dato IS NULL)

Substituye lo ? por algo coherente con tu estructura y las relaciones que tengan tus datos.

Si vas a limitar por un valor en un campo en la tabla 2 para obtener lo de t1 donde t2 este vació debes indicarlo, en este caso no es suficiente con el left join.

Si nos explicas un poco que tienes en cada tabla seria mas facil dar una solución mas concreta.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 23/07/2012, 07:21
 
Fecha de Ingreso: mayo-2009
Mensajes: 7
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Select de 2 tablas dentro de una consulta a 3 tablas

Aqui las tablas las he resumido mucho para aligerar el post, pero gracias por el consejo, lo he adaptado y funciona perfectamente :)

Básicamente tabla1 es un catalogo de objetos, tabla2 son las colecciones de los usuarios de esos objetos y tabla3 la lista de fabricantes de esos objetos. Un objeto siempre tiene 1 fabricante (Variable X), pero puede estar o no en la colección de un usuario (Variable Z). Con esta consulta multitabla puedo listar cientos de objetos y si el usuario posee alguno con una sola linea.

Etiquetas: join, php, select, tabla, tablas, campos
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 03:48.