Je cherche à optimiser deux requêtes en une seule, si possible.
Ma première requête recherche tous les auteurs d'une chanson... Ensuite, pour chaque auteur trouvé, je veux trouver le nombre total de chansons auxquelles l'auteur a participé...
Actuellement, j'exécute la première requête et pour chaque ligne trouvée, je lance une autre requête pour obtenir le nombre total de chansons auxquelles l'auteur a participé... Donc, s'il y a 4 auteurs, je finirai par lancer 4 requêtes supplémentaires... C'est trop de requêtes à mon avis. C'est pourquoi j'ai décidé de poster ici, pour obtenir de l'aide sur la manière d'optimiser ma requête...
Voici la requête que j'exécute pour obtenir l'auteur(s) responsable d'une chanson :
$sql = "SELECT author.author_id, author.name
FROM track INNER JOIN lyrics_author ON track.lyrics_id = lyrics_author.lyrics_id
INNER JOIN author ON lyrics_author.author_id = author.author_id
WHERE track.track_id = $trackid ";
Voici la requête pour obtenir le nombre total de chansons écrites par l'auteur :
$total = "SELECT lyrics_author.author_id, count(*) as total
FROM lyrics_author
WHERE lyrics_author.author_id = $author_id
GROUP BY lyrics_author.author_id";
Voici un exemple du code :
query($sql);
while ($row_author = $result_author->fetch_assoc()) {
$author_id = $row_author['author_id'];
$total = "SELECT lyrics_author.author_id, count(*) as total
FROM lyrics_author
WHERE lyrics_author.author_id = $author_id
GROUP BY lyrics_author.author_id";
$result_total_lyrics = @ $conn->query($total);
$t = $result_total_lyrics->fetch_assoc();
echo $t['total'];
$result_total_lyrics->free();
}
$result_author->free();
?>
Est-il possible d'optimiser cette requête? Si oui, comment? Y a-t-il un lien que vous pourriez me recommander, pour que je puisse apprendre...
Merci Marco