Comunidad de diseño web y desarrollo en internet online

Consulta compleja con 5 tablas relacionadas

Citar            
MensajeEscrito el 07 Sep 2011 02:40 am
Hola, necesito ayuda para resolver esta consulta en la que intervienen 5 tablas.

ACCIONES es la tabla principal
ACCIONES_CONTACTOS y ACCIONES_CONSULTORES unen a las ACCIONES con los CONTACTOS y CONSULTORES que puede tener una ACCION
Una ACCION puede tener varios CONSULTORES y varios CONTACTOS

Bueno mas fácil con una imagen:



Se me complica al tratar de obtener en un campo los nombres agrupados de Contactos y por otro lado los de Consultores

Lo había resuelto en un principio usando un GROUP_CONCAT para traer los nombres de los Contactos pero al agregar también un GROUP_CONCAT para los consultores me trae nombres duplicados, por ejemplo si tengo 1 consultor y 3 contactos, el consultor me lo repite tres veces, esta es la consulta que uso:

Código MySQL :

SELECT
acciones.id_accion,
acciones.fecha,
acciones.tipo,
GROUP_CONCAT(contactos.nombre) AS ListaContactos,
GROUP_CONCAT(consultores.nombre) AS ListaConsultores
FROM
acciones
LEFT JOIN acciones_contactos ON acciones_contactos.id_accion = acciones.id_accion
LEFT JOIN contactos ON contactos.id_contacto = acciones_contactos.id_contacto
LEFT JOIN acciones_consultores ON acciones_consultores.id_accion = acciones.id_accion
LEFT JOIN consultores ON consultores.id_consultor = acciones_consultores.id_consultor
GROUP BY acciones.id_accion;


Desde ya muchas gracias a quien me pueda ayudar a resolver este tema.
Saludos
Ariel

Por ariel5411

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 07 Sep 2011 12:11 pm
Evidentemente si para una misma acción no hay la misma cantidad de contactos y consultores, alguno de los dos se va a duplicar.

Tocará hacer dos consultas, una para contactos y otra para consultores.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Sep 2011 01:30 pm
Gracias DriverOP por tu respuesta! Ok, lo voy a resolver entonces con dos consultas, pensé que se podía integrar todo en una sola.
Saludos!

Por ariel5411

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Sep 2011 08:31 pm
Haz este cambio en la consulta:

Código MySQL :

GROUP_CONCAT(DISTINCT consultores.nombre) AS ListaConsultores 

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

firefox
Citar            
MensajeEscrito el 08 Sep 2011 03:13 pm
Gracias KB-27 !!!
Con la opción DISTINCT se eliminaron los duplicados.
Saludos!
Ariel

Por ariel5411

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.