2017-06-29 13 views
0

私は2つのクエリを組み合わせることを試みていますが、その方法はわかりません。私はジョインとそれを動作させる方法についてはほとんど知りません。MySQL SUMとSUMを加算して結合します

私は2つのテーブルを持っています。

ユーザー:

id, 
email, 
userNumber 

残高。

id, 
userNumber, 
credit, 
debit (multiple entries in which I use SUM - SUM group by userNumber) 

私の別のクエリの作業罰金以下の通りですが、私は何とかそれらを組み合わせる必要があります。

SELECT SUM(credit) - SUM(debit) as 'balance' FROM balances GROUP BY userNumber 

SELECT u.id, u.email, u.userNumber, 
g.userNumber AS groupID, 
g.debit AS debit, 
g.credit AS credit 
FROM user AS u 
LEFT JOIN balances AS g ON u.userNumber = g.userNumber 

I基本的にはね最初のテーブルをuserNumberに変換し、残りのテーブルを結合するために使用します。 2番目のテーブルは、残高に取って代わるデビットまたはクレジットを必要としません。

答えて

1

あなたはこの

SELECT u.id, u.email, u.userNumber, 
g.userNumber AS groupID, 
g.debit AS debit, 
g.credit AS credit, 
g.balance AS balance 
FROM user AS u 
LEFT JOIN (SELECT userNumber, SUM(credit) - SUM(debit) as 'balance' FROM balances GROUP BY userNumber) AS g ON u.userNumber = g.userNumber 
+0

グレートシンプルを使用して、私はすでに持っていたものに統合することができます。それをちょうど少し微調整しなければならなかった、g.debt AS債務とg.credit ASクレジットを2番目の選択で呼び出されなかったものとして取り除かなければならなかった。 – webbernaut

0

正確な形式がわからない場合は、LEFT JOINの最初の集計サブクエリを2番目のサブクエリに追加することをお勧めします。

SELECT 
    u.id, 
    u.email, 
    u.userNumber, 
    g.userNumber AS groupID, 
    COALESCE(g.debit, 0) AS debit, 
    COALESCE(g.credit, 0) AS credit, 
    COALESCE(t.balance, 0) AS balance 
FROM user AS u 
LEFT JOIN balances AS g 
    ON u.userNumber = g.userNumber 
LEFT JOIN 
(
    SELECT userNumber, SUM(credit) - SUM(debit) AS balance 
    FROM balances 
    GROUP BY userNumber 
) t 
    ON u.userNumber = t.userNumber 
関連する問題