您好,我有以下数据库架构,3个表:
NodeModel
我正在尝试输出一个查询,该查询针对数据库中的每个connect_account记录显示总计#个联系人和相关的user_recommendation。这是我到目前为止的内容:
connected_accounts (fields: id, user_id, account_name)
contacts (fields: id, user_id, connected_account_id, type)
user_recommendations (fields: id, user_id, contact_id)
这无法正常工作...所需的输出如下所示:
结果
SELECT
ca.id,
ca.user_id,
ca.account_name,
COUNT(c.id) AS Total
FROM connected_accounts ca
LEFT JOIN contacts c
ON ca.id = c.connected_account_id
AND c.contact_type = 'email'
WHERE ca.resource_type = 'calendar.readonly'
ORDER BY ca.id DESC
LIMIT 8
我尚未加入UserRecommendations,因为我的联系人加入无法正常工作。
查询中我做错了什么?谢谢
已更新:
id | user_id | account_name | Total Contacts | Total User Recommendations
以上更新。.以上更新的查询为SELECT
ca.id,
ca.user_id,
ca.account_name,
COUNT(c.id) AS 'Total Contacts',
COUNT(pr.id) AS 'Total User Rec.'
FROM connected_accounts ca
LEFT JOIN contacts c
ON ca.id = c.connected_account_id
AND c.contact_type = 'email'
LEFT JOIN user_recommendations pr
ON ca.id = pr.connected_account_id
WHERE ca.resource_type = 'calendar.readonly'
GROUP BY ca.id, ca.user_id, ca.account_name
ORDER BY ca.id DESC
LIMIT 8
和Total Contacts
返回相同的数字-该数字相同,这两个数字都是总联系人的正确数字。 {1}}没有返回...为什么?
答案 0 :(得分:1)
您错过了GROUP BY
。尝试这个。希望能帮助到你。
另外,LEFT JOIN
将具有connected_accounts
表中的所有记录,这是您想要的吗?
SELECT
ca.id,
ca.user_id,
ca.account_name,
COUNT(c.id) AS Total
FROM connected_accounts ca
LEFT JOIN contacts c
ON ca.id = c.connected_account_id
AND c.contact_type = 'email'
WHERE ca.resource_type = 'calendar.readonly'
GROUP BY ca.id, ca.user_id, ca.account_name
ORDER BY ca.id DESC
LIMIT 8