如何在连接多个表时计算不同值的数量?

use*_*214 3 mysql

我有以下数据库表

categories
id, name

products
category_id, id, product_name, user_id

product_comments
product_id, id, comment_text, user_id
Run Code Online (Sandbox Code Playgroud)

我需要在product和product_comments表中计算不同用户的数量.我有以下查询,我选择所有那些至少有一个产品的类别,每个产品可能有零或一些评论......但我不知道的是如何得到这些不同的用户ID的总和..如果它只是从一个表我会尝试COUNT(products.user_id)....我的查询...

SELECT 
c.*
FROM categories c
INNER JOIN products p ON p.category_id = c.id
LEFT JOIN product_comments pc ON pc.product_id = p.id
Run Code Online (Sandbox Code Playgroud)

我需要来自products和product_comments表的不同用户ID的总数.

我希望结果数据有点像下面这样:

Category_id, Category_name, TotalUsers
1, Test Category, 10
2, Another Category, 5
3, Yet another cat, 3
Run Code Online (Sandbox Code Playgroud)

Ed *_*bbs 5

这将为您提供总体计数,而不是所有不同ID的列表:

SELECT COUNT(DISTINCT user_id)
FROM products
LEFT JOIN product_comments comm ON products.id = comm.product_id
Run Code Online (Sandbox Code Playgroud)


Ada*_*dam 0

select user_id from products
UNION
select user_id from product_comments
Run Code Online (Sandbox Code Playgroud)

这将为您提供表中存在的用户 ID 的不同列表。用户可以仅出现在其中一个表中,也可以同时出现在两个表中,并且仍将包含在列表中。