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

标签 mysql amazon-web-services

您好,我有以下数据库架构,3 个表:

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)

我正在尝试输出一个查询,该查询显示数据库中每个 connect_account 记录、关联的联系人和 user_recommendations 的总数。这是我到目前为止所拥有的:

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

这无法正常工作...所需的输出如下所示:

结果

id | user_id | account_name | Total Contacts | Total User Recommendations

我尚未加入 UserRecommendations,因为我的联系人加入功能未按预期工作。

我在查询中做错了什么?谢谢

更新:

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 ContactsTotal User Rec 返回相同的 # — 该数字对于两者来说是相同的联系人总数的正确数字。用户记录总数未返回...为什么?

最佳答案

您错过了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

关于mysql - 输出两个关联表的总计的查询未正确返回总计,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52528275/

相关文章:

mysql - 程序限制

PHP 到 Codeigniter 语法 - 从 db/form 输入中选择减法

php - 从数据库中检索信息(1 个字段/对象;无数组)

ios - 如何使用 AWS iOS SDK v2 检查 Amazon S3 存储桶上是否存在 key /文件?

php - 如何从 Amazon CloudSearch 中的表字段中获取不同的记录

javascript - AWS - CORS 无法将文件直接上传到 S3

MYSQL:如何检查退出状态?

Mysql - 到底在哪里?

amazon-web-services - 不同端口的Route 53记录集

python - 在 Boto3 中,如何使用附加关键字参数为 list_objects 创建分页器?