C'est un problème que je rencontre souvent, et ma solution doit toujours exécuter de nombreuses requêtes, mais je pense qu'il doit y avoir un meilleur moyen. Voici mes deux tables pour cet exemple:Comment puis-je récupérer des listes dans des listes (similaires aux tableaux multidimensionnels)?
Artistes
id
nomChansons
id
ArtistlD
nom
genre
Le tableau sont liés en tant que tels:
artists.id < -> songs.artistID
Je voudrais chercher une liste de tous les artistes et en même temps chercher une liste de toutes les chansons par artiste. Je voudrais éviter les noms d'artistes en double dans mon jeu de résultats, de sorte que je n'ai pas à nettoyer l'ensemble de données en PHP. Voici un exemple du format que je voudrais que les données soient dans:
array(0 => array('name' => 'Artist A'
, 'songs' => array(0 => array('name' => 'Song 1'
, 'genre' => 'rock'
)
)
1 => array('name' => 'Song 2'
, 'genre' => 'rock'
)
)
)
1 => array('name' => 'Artist B'
, 'songs' => array(0 => array('name' => 'Song 3'
, 'genre' => 'rap'
)
)
1 => array('name' => 'Song 4'
, 'genre' => 'rap'
)
)
)
)
(Je sais que ce n'est pas un format MySQL, mais il est le plus proche façon dont je pourrais expliquer)
Est-ce possible ? Si c'est le cas, comment?
Merci!
Je ne connais pas très bien la clause IN, mais j'y reviendrai. Merci. –
SELECT * FROM Table1 où Table1ID IN (1, 2, 3, 4, 5, 6) Vous pouvez faire la même chose avec SELECT * FROM CHANSONS où ArtistID IN (1, 2, 3, 4). Si vous avez une poignée d'artistes, vous pouvez ensuite obtenir toutes les chansons de cet artiste en sélectionnant leur liste d'ID (ou vous pouvez faire une jointure directe). Mais avec une collection d'artistes et une collection de leurs chansons, vous devriez être en mesure de réaliser ce que vous cherchiez à faire. –