两个具有左连接的COUNTER正在被乘以

car*_*son 9 mysql sql join count left-join

我正在尝试获取一个查询,该查询为我提供表Users中的UserNames,用户从表Job2User获取的Jobs数,以及用户从表Place2User中获取的Places数.

以下查询将两个计数列的值相乘.例如,如果对于用户1,作业计数应为2且位置计数应为4,则用户1行中的两列将显示"8".我不确定我做错了什么:

SELECT `UserName`, COUNT(`Job2User`.`UserID`), COUNT(`Place2User`.`UserID`) 
FROM `Users`
LEFT JOIN `Job2User` ON `Job2User`.`UserID`=`Users`.`UserID` 
LEFT JOIN `Place2User` ON `Place2User`.`UserID`=`Users`.`UserID` 
GROUP BY `UserName`;
Run Code Online (Sandbox Code Playgroud)

Nul*_*Ref 22

您应该使用count( distinct ...)计算唯一值.而不是计算userid(外键)计数引用表的主键.

请参阅此处文档

你得到8,因为你从工作中返回2条记录,从地方返回4条记录.由于您没有计算不同的值,因此得到2*4 = 8.