0

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に購入数を掛けています。

私は何を間違っていますか?

ありがとう!

4

1 に答える 1

2

これを試して:

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
于 2012-07-26T00:08:17.977 に答える