1

我有一个页面显示与类别 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>&nbsp;</td>
    </tr>
    <?php } ?>
</table>

问题是当我尝试仅回应与给定帖子/文章相关的评论时。目前它正在显示所有评论,无论它们属于哪个帖子。

我在 StackOverflow 上发现了几个类似的问题,但没有一个可以用来解决我的问题。

4

1 回答 1

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;
于 2012-07-21T07:58:02.087 回答