私は3つのテーブルを持っています。mysqlのすべての顧客の顧客の最終残高を選択する方法
table_customers - customer_id, name
table_orders - order_id, customer_id, order_datetime
table_wallet - customer_id, amount, type // type 1- credit, type 2- debit
すべての顧客、合計残高、最終注文日、注文IDを取得する必要があります。これは私の質問です。
SELECT
C.customer_id,
C.name,
COALESCE(SUM(CASE WHEN type = 2 THEN -W.amount ELSE W.amount END), 0) AS value,
COALESCE(max(O.order_id ) , '0') AS last_order_id,
COALESCE(max(date(O.order_datetime)) , '0000-00-00') AS last_order_date
FROM
table_customers as C
LEFT JOIN
table_wallet as W
ON C.customer_id = W.customer_id
LEFT JOIN
table_orders AS O
ON W.customer_id = O.customer_id
group by C.customer_id
ORDER BY C.customer_id
お客様の合計金額を除いてすべてが正しいとされています。結果から、複数回追加されているようです。
クエリで何が間違っていますか?誰かが私にこれを助けることができますか?
合計はどこですか?あなたは価値を意味しますか? http://www.sqlfiddle.com/でスキーマとレコードを作成できますか?その後、私はあなたを助けることができます – Mojtaba
はい、その価値。私は質問を更新しました。 –
お願いします。サンプルデータなしで手助けするのは簡単ではありません – Mojtaba