MySQL连接3个表 - 从2个子表中获取聚合值

ace*_*ger 0 mysql sql aggregate

我需要从3个不同的表,1个父表,2个子表创建一个摘要.

如何根据用户ID(3个表中每个表中的pk)从两个子表中获取记录数.

父表(user)pk是userId子表1和2具有userId和webId的复合pks.

我知道这不是正确的SQL语法,但它说明了我所追求的内容.

select u.userId, count(table1.webId), count(table2.webId)
from `user` u 
left join `table1` t1 on u.userId = t1.userId
left join `table2` t2 on u.userId = t2.userId
group by u.userId
Run Code Online (Sandbox Code Playgroud)

nni*_*ols 5

您可能需要添加DISTINCT-

SELECT u.userId, COUNT(DISTINCT table1.webId), COUNT(DISTINCT table2.webId)
FROM `user` u 
LEFT JOIN `table1` t1
    ON u.userId = t1.userId
LEFT JOIN `table2` t2
    ON u.userId = t2.userId
GROUP BY u.userId
Run Code Online (Sandbox Code Playgroud)