Consulta compleja con 5 tablas relacionadas
Publicado por ariel (1 intervención) el 07/09/2011 04:33:44
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 aquí hay una imagen:
http://www.aysys.com.ar/clientes/consultaSQL.jpg
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:
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
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 aquí hay una imagen:
http://www.aysys.com.ar/clientes/consultaSQL.jpg
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:
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
Valora esta pregunta


0