可能であれば、2 つのクエリを 1 つに最適化することを検討しています。
私の最初のクエリは、歌詞のすべての作者を検索します...次に、見つかった各作者について、作者が関与した歌詞の総数を見つけたいです...
現在、最初のクエリを実行しており、見つかった行ごとに別のクエリを起動して、作者が関与した合計歌詞を取得しています...したがって、4人の作者がいる場合、さらに4つのクエリを起動することになります...それは私の意見では多くの質問です。そのため、ここに書き込むことにしたので、クエリを最適化する方法について助けを得ることができます...
これは、歌詞を担当する著者を取得するために実行しているクエリです。
$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 ";
これは、作者が書いた歌詞の総数を取得するクエリです。
$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";
これはコードのサンプルです:
<?php
$trackid = 5;
$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 ";
$result_author = @ $conn->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();
?>
このクエリを最適化することは可能ですか? はいの場合、どのように?あなたが参照できるリンクがあるので、私は学ぶことができます...
ありがとうマルコ