In MySQL I have the following three tables:
|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
If I wanted to get all the people and next to them the companies where they can work, I would do this:
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
Returning the following:
|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|
How can I modify the query to get only once but in another column all the companies to which it is related?
To get the following:
|nombre_persona|dni_empresa|nombre_empresa|
|Juan |12345 |cocaloca |
| |54321 |pipseloca |
Note:
1) Try using DISTINCT
but return the same repeated records.
2) Use groupby nombre_persona
and just return an example log juan cocaloca