查询输出两个关联表的总计而未正确返回总计的查询,为什么?

时间:2018-09-27 01:46:55

标签: mysql amazon-web-services

您好,我有以下数据库架构,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}}没有返回...为什么?

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