在MySql中计算两个联接表中的项

在MySql中计算两个联接表中的项,mysql,Mysql,我有三张桌子: 用户: 用户id, 名称 项目: 项目编号:, 用户id 追随者: 追随者用户id, 跟踪用户id 我想获得用户信息+他的物品数量+他的追随者数量。 用户可能没有项目或追随者 我正在运行以下查询: SELECT users.user_id, users.name, COUNT(items.item_id) AS num_of_items, COUNT(followers.followed_user_id) AS followers FROM users JOIN

我有三张桌子:

用户: 用户id, 名称

项目: 项目编号:, 用户id

追随者: 追随者用户id, 跟踪用户id

我想获得用户信息+他的物品数量+他的追随者数量。 用户可能没有项目或追随者

我正在运行以下查询:

SELECT users.user_id, users.name, 
    COUNT(items.item_id) AS num_of_items, COUNT(followers.followed_user_id) AS followers 
FROM users
JOIN items
ON users.user_id = items.user_id
LEFT OUTER JOIN followers
ON users.user_id = followers.followed_user_id
WHERE users.user_id = :user_id
但是我在计算数值方面遇到了麻烦。 如果其中一个计数为0,则另一个计数正确,但如果两者都不是0,则两者的最高值相同

例如:

案例1: 3项 0个追随者 结果: 3项 0个追随者

案例2: 18项 1个跟随者 结果: 18项 18名追随者


如果有人能帮我修复查询,我将不胜感激。

使用
distinct
对具有多个联接的查询进行多次计数

SELECT users.user_id, users.name, 
    COUNT(distinct items.item_id) AS num_of_items, COUNT(distinct followers.followed_user_id) AS followers 
FROM users
JOIN items
ON users.user_id = items.user_id
LEFT OUTER JOIN followers
ON users.user_id = followers.followed_user_id
WHERE users.user_id = :user_id

使用DISTINCT确实让我更亲近了。我只需要将“不同的跟随者。跟随者的用户id”更改为“不同的跟随者。跟随者的用户id”。谢谢