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に購入数を掛けています。
私は何を間違っていますか?
ありがとう!