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

Consulta a 3 tablas con condiciones

Estas en el tema de Consulta a 3 tablas con condiciones en el foro de Mysql en Foros del Web. Hola pues resulta que tengo que hacer una consulta a 3 tablas, y estaba utilizando left join para ellos y me funcionaba bien ya que ...
  #1 (permalink)  
Antiguo 30/06/2010, 05:34
 
Fecha de Ingreso: febrero-2008
Ubicación: Vigo, España
Mensajes: 150
Antigüedad: 16 años, 2 meses
Puntos: 0
Consulta a 3 tablas con condiciones

Hola pues resulta que tengo que hacer una consulta a 3 tablas, y estaba utilizando left join para ellos y me funcionaba bien ya que en todas las tablas tenia solamente un registro por cada id que tenia en la tabla principal.

El problema lo tengo ahora que en la tercera tabla tengo varios registros para cada id principal. En esta tercera tabla tengo un campo que marca cual de los registros tendría que seleccionar, pero no se como hacer ese WHERE, ya que no en todos los id tienen relación con esa tercera tabla.

ejemplo del codigo que utilizaba:
Código PHP:
SELECT campo1campo2campo3                            
FROM tabla1 
LEFT JOIN tabla2 ON tabla1
.id tabla2.id_barco 
LEFT JOIN tabla3 ON tabla3
.id tabla1.id_barco
  #2 (permalink)  
Antiguo 30/06/2010, 06:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta a 3 tablas con condiciones

WHERE esecampo=condicion OR esecampo is null ???

siempre que ESECAMPO tenga un valor por defecto y por tanto solo sea null cuando no exista registro relacionado....

Si no te funciona deberas explicarte más....

Quim
  #3 (permalink)  
Antiguo 30/06/2010, 08:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta a 3 tablas con condiciones

SELECT campo1, campo2, campo3
FROM tabla1
LEFT JOIN tabla2 ON tabla1.id = tabla2.id_barco
LEFT JOIN tabla3 ON (tabla3.id = tabla1.id_barco AND tabla3.campo = loquesea);
en lo que sea pones el valor que sirve para marcar cuál de esos registros es el que quieres de todos los que tienen el mismo id en esa tabla3.
De otdas formas no sé por qué usas left join
Yo usaría INNER JOIN
SELECT campo1, campo2, campo3
FROM tabla1
INNER JOIN tabla2 ON tabla1.id = tabla2.id_barco
INNER JOIN tabla3 ON (tabla3.id = tabla1.id_barco AND tabla3.campo = loquesea);
  #4 (permalink)  
Antiguo 30/06/2010, 08:58
 
Fecha de Ingreso: febrero-2008
Ubicación: Vigo, España
Mensajes: 150
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Consulta a 3 tablas con condiciones

Muchas gracias a los dos, he probado la solucion que me propuso quimfv y me ha funcionado perfectamente. Un saludo

Etiquetas: condiciones, tablas
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 22:22.