MySQL SUM减去SUM并加入

时间:2017-06-29 02:06:06

标签: mysql

我正在尝试将两个查询组合在一起而不确定方法。我对连接以及如何使用它们知之甚少。

我有两张桌子。

用户:

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

我基本上需要将第一个表转换为userNumber并平衡,然后使用它来加入另一个表。第二个表格不需要借助余额的借方或贷方。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在不知道您想要什么样的格式的情况下,我建议您只将第一个聚合子查询LEFT JOIN发送到第二个。

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
相关问题