Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2011, 17:39
Avatar de Chico3001
Chico3001
 
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Unir 2 tablas y varias veces un campo

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..