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

[SOLUCIONADO] INNER JOIN regresa multiples lineas

Estas en el tema de INNER JOIN regresa multiples lineas en el foro de Mysql en Foros del Web. Hola tengo esta consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT * FROM cliente INNER JOIN correo INNER JOIN banco   INNER JOIN telefono_cliente INNER ...
  #1 (permalink)  
Antiguo 26/03/2011, 18:34
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 15 años, 8 meses
Puntos: 7
INNER JOIN regresa multiples lineas

Hola tengo esta consulta:

Código MySQL:
Ver original
  1. SELECT * FROM cliente INNER JOIN correo
  2. INNER JOIN banco
  3.  INNER JOIN telefono_cliente
  4. INNER JOIN tipo_tarjeta
  5.  ON cliente.id_cliente=correo.id_cliente
  6.  and cliente.id_cliente=banco.id_cliente
  7.  and telefono_cliente.id_cliente
  8.  and cliente.id_cliente=tipo_tarjeta.id_cliente
  9.  WHERE correo.principal=1
  10.  and telefono_cliente.principal_tel=1


lo que pasa es que me regresa multiples lineas de un mismo usuario y yo quiero que me regrese una linea por usuario.

cabe mencionar que un usuario puede tener varios correos pero solo uno puede ser principal, lo mismo ocurre con telefono_cliente.
  #2 (permalink)  
Antiguo 26/03/2011, 18:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: INNER JOIN regresa multiples lineas

La solución es relativamente fácil: Hay que agrupar por cliente, pero además tienes que poner correctamente los INNER JOIN. Cada uno de ellos debe tener su propio ON, además de estar mal puesta una de las condiciones.

Código MySQL:
Ver original
  1.     cliente C INNER JOIN
  2.     correo CO ON C.id_cliente = CO.id_cliente
  3.     INNER JOIN banco B ON C.id_cliente = B.id_cliente
  4.     INNER JOIN telefono_cliente TC ON C.id_cliente = TC.id_cliente
  5.     INNER JOIN tipo_tarjeta TT ON C.id_cliente= TT.id_cliente
  6. WHERE CO.principal=1 AND TC.principal_tel=1
  7. GROUP BY C.id_cliente;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, lineas, multiples
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 15:26.