Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2016, 04:55
ingwealcarin
 
Fecha de Ingreso: enero-2016
Mensajes: 2
Antigüedad: 8 años, 4 meses
Puntos: 0
Pregunta Simplificar varias consultas dentro de while

Buenas a todos, tengo una duda con mysql y las relaciones muchos a muchos:

Tengo tres tablas tal que asi:

autor a
a.ID_AUTOR
a.NOMBRE

cancion m
m.ID_CANCION
m.TITULO

cancion_autor ma
ma.ID_MA
ma.ID_CANCION
ma.ID_AUTOR

Para mostrar el listado de todas las canciones y que apareciesen todos los autores de dichas canciones usaba una búsqueda de todas las canciones:

Código:
SELECT m.TITULO, m.ID_CANCION FROM cancion m
y en el while para mostrar los datos de cada canción (guardado su id en $ID_CANCION) anidaba otra consulta para conseguir los autores de dicha canción:

Código:
SELECT ma.ID_MA, a.NOMBRE, FROM cancion_autor ma
INNER JOIN autor a ON a.ID_AUTOR = ma.ID_AUTOR
WHERE ma.ID_CANCION LIKE '$ID_CANCION'
El problema es que si son casi 4000 canciones -con sus casi 4000 while y sus casi 4000 consultas- y la cantidad de consultas que hay que hacer a la base de datos me parece excesivo.

Por desgracia mis conocimientos de mysql no llegan como para conseguir todos los datos que necesito en una sola búsqueda, eliminando la consulta dentro del bucle while. Es decir: querría conseguir que al buscar en todas las canciones, en el array de resultados me apareciesen los nombres de todos los autores de dicha canción.

Espero que se me haya entendido. Muchas gracias de antemano, saludos.