Tengo las siguientes tablas:
empresas_personas
----------------------------
id
id_empresa
id_persona
empresas_telefonos
----------------------------
id
id_empresa
id_telefono
id_persona
El campo id_persona de la tabla empresas_telefonos puede ser NULL, si existe un valor indica que el telefono es personal (o directo) y si no existe indica que el telefono es un conmutador
Y necesito formar un directorio de telefonos de la siguiente manera:
id_empresa, id_persona, id_telefono_conmutador, id_telefono_directo
Ejemplo:
Empresa1, Persona1, (telefonoempresa1, telefonoempresa2), (telefonodirecto1,telefonodirecto2)
Empresa1, Persona2, (telefonoempresa1, telefonoempresa2), (telefonodirecto3)
etc..
El problema al que me enfrento es que una empresa puede tener multiples personas y multiples telefonos y estos se van repitiendo para cada persona
Hasta ahora lo resolvi de la siguiente manera:
Código:
SELECT empresas_personas.id, empresas_personas.id_empresa, empresas_personas.id_persona, e1.id_telefono AS tel_empresa, e2.id_telefono AS tel_directo
FROM empresas_personas
LEFT JOIN empresas_telefonos AS e1 ON empresas_personas.id_empresa = e1.id_empresa
AND ISNULL( e1.id_persona )
LEFT JOIN empresas_telefonos AS e2 ON empresas_personas.id_empresa = e2.id_empresa
AND e2.id_persona = empresas_personas.id_persona
LIMIT 0 , 10
Pero este codigo me repite a las personas por cada telefono que encuentra, en vez de concatenar todos los telefonos encontrados en uno solo separados por espacios
Conozco la orden CONCAT_WS, solo que no se como realizar la subconsulta para que me encuentre todos los telefonos y los una a una sola persona
Me pueden ayudar?
Gracias..