Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/05/2013, 07:52
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Consulta Mysql relacion mucho a mucho

Hola randy05:

podrías hacer uso de la función GROUP_CONCAT la cual te regresa una cadena separada por comas con todos los elementos agrupados, supongamos que tus tablas tienen más o menos los siguientes datos:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM contacto;
  2. +------------+--------+
  3. | idcontacto | nombre |
  4. +------------+--------+
  5. |          1 | juan   |
  6. |          2 | leo    |
  7. +------------+--------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT * FROM grupos;
  11. +---------+----------+
  12. | idgrupo | grupo    |
  13. +---------+----------+
  14. |       1 | arte     |
  15. |       2 | cine     |
  16. |       3 | tarea    |
  17. |       4 | profesor |
  18. |       5 | clase    |
  19. +---------+----------+
  20. 5 rows in set (0.00 sec)
  21.  
  22. mysql> SELECT * FROM contacto_grupo;
  23. +------------+---------+
  24. | idcontacto | idgrupo |
  25. +------------+---------+
  26. |          1 |       1 |
  27. |          1 |       2 |
  28. |          1 |       3 |
  29. |          1 |       4 |
  30. |          1 |       5 |
  31. |          2 |       2 |
  32. |          2 |       4 |
  33. +------------+---------+
  34. 7 rows in set (0.03 sec)

Tu podrías hacer lo siguiente:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->   c.idcontacto,
  3.     ->   c.nombre,
  4.     ->   GROUP_CONCAT(g.grupo)
  5.     -> FROM contacto c
  6.     ->   INNER JOIN contacto_grupo cg ON c.idcontacto = cg.idcontacto
  7.     ->   INNER JOIN grupos g ON cg.idgrupo = g.idgrupo
  8.     -> GROUP BY c.idcontacto, c.nombre;
  9. +------------+--------+--------------------------------+
  10. | idcontacto | nombre | GROUP_CONCAT(g.grupo)          |
  11. +------------+--------+--------------------------------+
  12. |          1 | juan   | tarea,profesor,clase,arte,cine |
  13. |          2 | leo    | cine,profesor                  |
  14. +------------+--------+--------------------------------+
  15. 2 rows in set (0.03 sec)

Esta sería una idea, espero que te sirva.

Saludos
Leo.