En MySQL poseo las siguientes tres tablas:
|Personas |
-------------------
|dni_persona int | 1
|nombre_persona | Juan
|Empresas |
-------------------
|dni_empresa | 12345 54321
|nombre_empresa | cocaloca pipse cola
|Personas_Empresas |
--------------------
|dni_persona_a | 1 1
|dni_empresa_a | 12345 54321
Si quisiera obtener a todas las personas y junto a ellas las empresas en las que pueden trabajar haria esto:
SELECT *
FROM personas_empresas as pe
LEFT JOIN personas as p ON pe.dni_persona_a = p.dni_persona
LEFT JOIN empresas as e ON pe.dni_empresa_a = e.dni_empresa
Regresando lo siguiente:
|dni_persona_a|dni_empresa_a|dni_persona|nombre_persona|dni_empresa|nombre_sa|
|1 |12345 |1 |Juan |12345 |cocaloca |
|1 |54321 |1 |Juan |54321 |pipseloca|
¿Como puedo modificar la consulta para obtener solo una vez Juan pero en otra columna todas las empresas a la que este relacionado?
Para obtener lo siguiente:
|nombre_persona|dni_empresa|nombre_empresa|
|Juan |12345 |cocaloca |
| |54321 |pipseloca |
Nota:
1) Trate usando DISTINCT
pero regresa igual repetidos los registros.
2) Use groupby nombre_persona
y solo regresa un registro ejemplo juan cocaloca