2011-01-05 17 views
5

Necesito hacer una consulta que crea 3 columnas que vienen de 2 mesas que tienen las siguientes relaciones:MySQL unirse con varios valores en una columna

TABLA 1 tiene identificador de columna que se relaciona con la Tabla 2 con la columna ID2

en la Tabla 1 hay una columna llamada de usuario en la tabla 2 hay una columna llamada nombres

No puede haber 1 de usuario única, pero puede haber muchos nombres asociados a ese usuario.

Si hago lo siguiente, obtengo todos los datos PERO la columna del usuario se repite para cada nombre que tiene asociado. Lo que quiero es que el uso parezca único, pero las columnas de nombres aparecen con todos los nombres asociados a la columna del usuario pero separados por comas, como los siguientes:

seleccionar usuario, los nombres de TABLE1 se unieron TABLE2 en TABLE1.id = TABLE2.id

Esto mostrará a los usuarios repetidos cada vez que aparece un nombre para ese usuario. lo que quiero es que aparezca así:

USUARIO - NOMBRES
Cyrex - pedrox, rambo, zelda
homeboy - Carmen, Carlos, tom, Sandra
Jerry - Seinfeld, Christine
Ninja - soloboy

etc ....

Respuesta

11

Lo que está buscando es el operador GROUP_CONCAT.

select user, GROUP_CONCAT(names SEPARATOR ',') 
from TABLE1 left join TABLE2 on TABLE1.id = TABLE2.id 
group by user 
+1

Esta es una muy buena respuesta. muchas gracias eric. –