假设我有三张桌子-
blogs,
comments,
replies
在
blogs
表中,我有一列名为blog_id
,这个id也是blogs
表的主键。
在
comments
表中,我将 comment_id
作为主键,将 comm_blog_id
作为带有 blog_id
的外键。
在
replies
表中,我将 reply_id
作为主键,reply_blog_id
作为带有 blog_id
的外键,以及 reply_comm_id
作为带有 comment_id
的外键。
像这样-
blog1
comment1
reply1
blog2
comment1
reply1
blog3
comment1
comment2
reply1
comment3
blog4
comment1
reply1
reply2
reply3
comment2
comment3
现在,如果我想计算
count
中组合的 comments and replies
的总数 blog1
必须是 2
中的 blog2
必须是 2
中的 blog3
才能成为 4
,并且在 blog4
中必须是 6
。
我写的查询如下:
SELECT
blogs.blog_id = '1',
(
(SELECT COUNT(*) FROM comments WHERE comments.comm_blog_id = blogs.blog_id) +
(SELECT COUNT(*) FROM replies WHERE replies.reply_blog_id = blogs.blog_id)
) AS total_count
FROM blogs;
这给了我正确的结果,但也给了我行数,我不知道为什么这种情况发生在我身上。
我研究了很多,但没有找到正确的地方,任何人都可以告诉我哪里错了,或者有任何其他查询来计算特定博客中的所有行。
我知道 php-comment
mysqli_num_rows($result)
可以计算行数,但只有当我们有行数数据时才会发生这种情况。
我想计算
count
中组合的
comments and replies
的总数
blog1
试试这个
SELECT blog_id, COUNT(*) AS total_references
FROM (
SELECT comm_blog_id AS blog_id
FROM comments
UNION ALL
SELECT reply_blog_id AS blog_id
FROM replies
) AS combined_references
GROUP BY blog_id;