Bonjour, je veux lister toutes les chansons de l'album et je veux lister tous les artistes pour chaque chanson individuelle, voir ci-dessous pour un exemple.
1. Titre de la chanson 1
- Artiste 1, Artiste 2, Artiste 3 note: (tous ces artistes individuels ont un lien vers leur page d'artiste)
2. Titre de la chanson 2
- Artiste 1, Artiste 2
3. Titre de la chanson 3
- Artiste 1, Artiste 2, Artiste 3
Mes tables sont chanson, album, artiste, chanson_artiste
table chanson
+----+-----------+----------+
| id | nom_chanson | id_album |
+----+-----------+----------+
| 1 | Titre 1 | 2 |
| 2 | Titre 2 | 2 |
| 3 | Titre 3 | 2 |
+----+-----------+----------+
table album
+----+------------+
| id | nom_album |
+----+------------+
| 1 | Album 1 |
| 2 | Album 2 |
| 3 | Album 3 |
+----+------------+
table artiste
+----+-------------+
| id | nom_artiste |
+----+-------------+
| 1 | Artiste 1 |
| 2 | Artiste 2 |
| 3 | Artiste 3 |
+----+-------------+
table chanson_artiste
+--------+--------------+---------+
| id | id_chanson |id_artiste|
+--------+--------------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 5 |
| 3 | 1 | 3 |
| 4 | 2 | 3 |
| 5 | 2 | 1 |
| 6 | 3 | 2 |
| 7 | 3 | 1 |
+--------+--------------+---------+
Voici mon code actuel.
$id =$_GET['id']; *// Récupérer l'id de l'album à partir de l'URL*
$query = "SELECT id, song_name, FROM song WHERE album_id = '".$id."'";
$result = mysql_query($query) or die("h".mysql_error());
while( $song = mysql_fetch_assoc($result)){
echo $song['song_name'];
$result1 = mysql_query("SELECT artist.artist_name as artist_name, artist.id as aid
FROM artist
INNER JOIN song_artist
ON artist.id = song_artist.artist_id
WHERE song_artist.song_id = '".$song['id']."' ");
while($row = mysql_fetch_array($result1)){
echo "".$row['nom_artiste'].", ";
}
}
Comment puis-je écrire une seule requête mysql pour obtenir tous les résultats en php?
Merci pour votre aide à l'avance.
James.
D'accord, maintenant j'ai obtenu le résultat que je voulais, merci à tous.
$query = "select s.id id_chanson, s.nom_chanson, group_concat(art.nom_artiste) nom_artiste, a.id
from chanson s
left outer join album a on a.id = s.id_album
left outer join chanson_artiste sa on sa.id_chanson = s.id
left outer join artiste art on art.id = sa.id_artiste
WHERE a.id= '".$id."'
GROUP BY id_chanson";