Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

devolver relacion uno a muchos

Estas en el tema de devolver relacion uno a muchos en el foro de Mysql en Foros del Web. Tengo una tabla de relación entre 'usuarios' y 'palabras'. Es una relación muchos a muchos, pero lo que me interesa listar es todas las palabras ...
  #1 (permalink)  
Antiguo 04/10/2010, 08:38
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
devolver relacion uno a muchos

Tengo una tabla de relación entre 'usuarios' y 'palabras'. Es una relación muchos a muchos, pero lo que me interesa listar es todas las palabras que tiene asignadas un usuario.

Por ahora lo que tengo es un array que me lista algo así:

2:3
2:5
2:6
2:8
3:3
4:6
4:9

Pero necesitaría obtener algo así, por describirlo de alguna manera:

2(3,5,6,8)
3(3)
4(6,9)

Como puedo hacerlo desde mysql?
  #2 (permalink)  
Antiguo 04/10/2010, 10:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: devolver relacion uno a muchos

Mayid,
usa GROUP_CONCAT() agrupando por el nombre del campo del primer número que presentas. Ojo, porque tiene limitaciones de tamaño. Mira sobre la función en el manual de MySQL.
Imaginemos que se llaman campo1 y campo2
SELECT campo1, GROUP_CONCAT(campo2 ORDER BY campo2) FROM tutabla GROUP BY campo1

Yo los paréntesis los pondría con programación, aunque también puedes hacerlo así:

SELECT campo1, CONCAT('(',GROUP_CONCAT(campo2 ORDER BY campo2),')') datos FROM tutabla GROUP BY campo1

Esto no lo he probado.

Última edición por jurena; 04/10/2010 a las 10:23
  #3 (permalink)  
Antiguo 04/10/2010, 10:21
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: devolver relacion uno a muchos

Genial! Es lo que buscaba.

Etiquetas: devolver, muchos, relacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:16.