左結合の SQL クエリに問題がありますが、なぜ機能しないのかわかりません。顧客、購入、支払いの 3 つのテーブルがあり、合計購入費用が合計支払いよりも少ない (つまり、残高が 0 より大きい) 顧客を選択しようとしています。
これまでのところ、私は次のものを持っています:
テーブル:
Customers
id | Name
Purchases
id | customerid | cost
Payments
id | customerid | paymentamount
SQL クエリ:
SELECT a.*,
COALESCE(b.totalCost , 0) as totalCost,
COALESCE(c.totalPayments , 0) as totalPayments,
COALESCE(b.totalCost , 0) - COALESCE(c.totalPayments , 0) AS Balance
FROM customers a
LEFT JOIN (SELECT customerid, SUM(cost) AS totalCost FROM purchases GROUP BY customer) b ON a.id = b.customerid
LEFT JOIN (SELECT customerid, SUM(paymentamount) AS totalPayments FROM payments GROUP BY customerid) c ON a.id = c.customerid
WHERE Balance > 0"
クエリを実行すると、Balance を定義しているにもかかわらず、「WHERE 句」の「Unknown column 'Balance'」というエラーが表示されます。
どんな助けでも大歓迎です。ありがとう!