我希望能将两个查询优化为一个,如果可能的话。
我的第一个查询是搜索所有歌词作者... 然后,对于每个找到的作者,我想找到该作者涉及的歌词总数...
现在,我正在执行第一个查询,对于每个找到的行,我都会启动另一个查询来获取作者参与的歌词总数... 因此,如果有4个作者,我最终会启动4个以上的查询... 在我看来,那太多查询了。这就是为什么我决定在这里写下来,以便我可以得到帮助优化我的查询...
这是我执行的查询来获取负责歌词的作者:
这是获取作者总歌词数的查询语句:
这是一段代码的示例:
我的第一个查询是搜索所有歌词作者... 然后,对于每个找到的作者,我想找到该作者涉及的歌词总数...
现在,我正在执行第一个查询,对于每个找到的行,我都会启动另一个查询来获取作者参与的歌词总数... 因此,如果有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();
?>
能否优化这个查询?如果可以,如何优化?您能提供一个链接让我学习吗?
谢谢 马可
@
。在那里隐藏错误意味着你将无法看到任何错误。这可能会导致一些困难,试图弄清楚发生了什么。 - Chris Henry