此查询始终返回与num_of_users相同的“num_of_accounts” 但如果我用lists_user_assignment删除第二个连接 num_of_accounts是正确的
select lists.*, count(lists_account_assignment.id) as num_of_accounts, count(lists_user_assignment.id) as num_of_users
from lists
left join lists_account_assignment on lists.id = lists_account_assignment.lists_id
left join lists_user_assignment on lists.id = lists_user_assignment.lists_id
where lists.tenant_id = 1
group by lists.id
不确定这是否是在查询中获得2个计数的正确方法。此外,如果此查询将是昂贵的或不。非常感谢帮助。
答案 0 :(得分:0)
试试这个..
SELECT L.*, count(Acc.id) AS NoOfAccounts
FROM lists L
LEFT JOIN lists_account_assignment Acc
ON L.id = Acc.lists_id
LEFT JOIN lists_user_assignment U
ON L.id = U.lists_id
AND L.tenant_id = 1
GROUP BY L.id
答案 1 :(得分:0)
尝试使用COUNT(DISTINCT ..): -
SELECT lists.*,
Count(DISTINCT lists_account_assignment.id) AS num_of_accounts,
Count(DISTINCT lists_user_assignment.id) AS num_of_users
FROM lists
LEFT JOIN lists_account_assignment
ON lists.id = lists_account_assignment.lists_id
LEFT JOIN lists_user_assignment
ON lists.id = lists_user_assignment.lists_id
WHERE lists.tenant_id = 1
GROUP BY lists.id