【问题标题】:SELECTing SUM Across Two Tables for Each User为每个用户在两个表中选择 SUM
【发布时间】:2012-07-26 00:02:16
【问题描述】:

我有一个包含 users 表、credit_purchase 表和 credit_spend 表的应用程序。我正在尝试获取用户当前拥有的信用额度。

学分表如下:

credit_purchase

+----+---------+-------+---------------------+
| id | user_id | coins | timestamp           |
+----+---------+-------+---------------------+

credit_spend

+----+---------+-------+---------------------+
| id | user_id | coins | timestamp           |
+----+---------+-------+---------------------+

我要做的是为每个用户选择 SUM(credit_purchase.coins) - SUM(credit_spend.coins)。现在我有这样的东西:

SELECT users.*, COALESCE(SUM(credit_purchase.coins) - SUM(credit_spend.coins), 0) 
FROM users 
LEFT JOIN credit_purchase ON users.id = credit_purchase.user_id 
LEFT JOIN credit_spend ON users.id = credit_spend.user_id 
GROUP BY users.id

但是,结果不是正确的数字。似乎是对购买进行了适当的求和,但是将支出中的 SUM 乘以购买次数。

我做错了什么?

谢谢!

【问题讨论】:

    标签: mysql math join sum


    【解决方案1】:

    试试这个:

    SELECT  users.*, 
            COALESCE(SUM(credit_purchase.coins) - SUM(credit_spend.coins), 0) 
    FROM    users 
                LEFT JOIN credit_purchase
                        ON users.id = credit_purchase.user_id 
                LEFT JOIN credit_spend 
                        ON users.id = credit_spend.user_id 
    GROUP BY users.id
    

    【讨论】:

    • 糟糕。我用错误的表名写了问题。编辑反映了我一直在使用的应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2014-02-18
    • 2011-11-23
    • 2019-04-26
    • 2021-04-07
    • 2011-07-08
    • 2010-10-09
    相关资源
    最近更新 更多