MySql 查询计算具有第三个表的引用 id 的两个表的总行数

问题描述 投票:0回答:1

假设我有三张桌子-

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

blogs_table

comments_table

replies_table

sql mysql
1个回答
0
投票

试试这个

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;
© www.soinside.com 2019 - 2024. All rights reserved.