gpt4 book ai didi

php - mysql查询获取文章的评论总数

转载 作者:行者123 更新时间:2023-11-29 03:54:50 25 4
gpt4 key购买 nike

我有 2 个表,一个用于文章,第二个用于评论,现在我想使用 1 个查询获取评论总数和所有文章详细信息,我不想使用 2 个查询,一个单独用于文章详细信息,一个用于评论, 有人可以帮我获得对特定文章及其所有评论的评论总数..

文章表... article_id评论表.... comment_id, comment_article_id

正常得到评论我是这样的选择 COUNT(*) 作为总数....

现在我想通过一个查询同时获取这两个东西(来自 article_id 的完整文章详细信息)和评论表中的评论总数(如果可能的话,还有该文章 ID 上的所有评论详细信息)......

问候

最佳答案

要获取文章详细信息和评论数,您可以使用以下命令

SELECT 
articles.*,
COALESCE(COUNT(comments.comment_id),0) AS numberOfCommments

FROM articles
LEFT JOIN comments
ON comments.comment_article_id = articles.article_id
AND comments.comment_type = 'B'

// If selecting a specific article use this line
WHERE articles.article_id = [[ARTICLE_ID]]

// If selecting all articles with counts use this line
GROUP BY articles.article_id

您无法在与 articles 表相同的查询中真正获取评论详细信息,因为两者很可能具有不同的字段。如果您真的只想让所有评论都跟在文章之后,那么像下面这样的东西就可以了。使用以下内容,确保第一个查询中的列与第二个查询中的列匹配(即文章中的标题列与空字符串(显示)或评论中的标题列匹配)。 我个人不会这样做,而只会执行 2 个查询,一个用于获取文章详细信息,一个用于获取任何评论,因为这样一来,列类型可能不匹配并不重要,这也意味着文章查询不需要加入评论,因为您可以只计算评论查询中的行数

单查询联合方式,不推荐

(
SELECT
'article' AS rowType,
article_date_posted,
article_title,
article_content
FROM articles
WHERE article_id = [[ARTICLE_ID]]
)
UNION
(
SELECT
'comment' AS rowType,
comment_date_posted,
'', // Empty string because comments usually have no title
comment_content
FROM comments
WHERE comment_article_id = [[ARTICLE_ID]]
AND comment_type = 'B'
ORDER BY comment_date_posted ASC
)

2-query方式,更简单,大多数情况下效率更高

//articles query
SELECT *
FROM articles
WHERE article_id = [[ARTICLE_ID]];

//comments query
SELECT *
FROM comments
WHERE comment_article_id = [[ARTICLE_ID]]
AND comment_type = 'B';

关于php - mysql查询获取文章的评论总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com