我有一个页面显示与类别X相关的所有帖子。我无法显示与每个帖子相关的评论。
以下是相关的数据库表:
TABLE 'articles'
'article_id'
'title'
'article'
'updated'
'created'
TABLE 'categories'
'cat_id'
'category'
TABLE 'article2cat' (relates an article to a category using two primary keys)
article_id
cat_id
TABLE 'comments'
comment_id
comment
user
created
TABLE 'comment2article' relates a comment to an article using two primary keys)
comment_id
article_d
提取文章和评论的SQL查询是:
SELECT articles.article_id, articles.title, articles.article, DATE_FORMAT(articles.created, "%b, %Y") AS date_created, comments.comment_id, comments.user, comments.comment
FROM articles INNER JOIN article2cat USING (article_id), comments INNER JOIN comment2article USING (comment_id)
WHERE cat_id=4
ORDER BY articles.created DESC;
显示文章和评论的代码是:
<table id="articles-table" cellpadding="0" cellspacing="0">
<?php while ($row = $result->fetch_assoc()) { ?>
<tr>
<td id="articles-article">
<div id="articles-article-internal">
<?php echo format($row['article']); ?></div>
</td>
</tr>
<tr>
<td><?php echo $row['comment']; ?></td>
</tr>
<tr>
<td> </td>
</tr>
<?php } ?>
</table>
问题是当我尝试仅回显与给定帖子/文章相关的评论时。目前它显示所有评论,无论他们属于哪个帖子。
我在StackOverflow上发现了几个类似的问题,但没有一个我可以用来解决我的问题。
答案 0 :(得分:1)
分别选择文章和评论。查看查询结果。每个评论都会得到所有文章的副本。当评论数量增长时会发生什么?例如。你有一篇约5000个字符的文章。当您进行查询时,您将获得接近5000字节的数据。但如果你的文章有200条评论?查询结果大约是5000 * 200 +所有注释字节。
SELECT comments.*
FROM comments INNER JOIN comment2article USING (comment_id)
WHERE comment2article.article_d= ID of article
ORDER BY comments.created DESC;