首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用组的两次,但不与加入本身?

如何使用组的两次,但不与加入本身?
EN

Stack Overflow用户
提问于 2018-12-05 08:58:08
回答 1查看 44关注 0票数 2

在MYSQL中,我有people_table:

代码语言:javascript
复制
------------------------------------------
people_table
------------------------------------------
person_ID(INT)   name(VARCHAR(45))
1                A
2                B
3                C
4                D
------------------------------------------

和lend_borrow_money_table

代码语言:javascript
复制
------------------------------------------
lend_borrow_money_table
------------------------------------------
bill(DATE) lender_ID  money(INT)  borrower_ID
2018-11-1  1           100        2
2018-11-2  2           200        3
2018-11-3  3           300        4
2018-11-30 2           400        3
------------------------------------------

现在我想要这样的选择结果

代码语言:javascript
复制
------------------------------------------
name      lend     borrow   total
A         500      0        500
B         400      500      -100
C         0        600      -600
D         0        300      -300   
------------------------------------------

以我的方式,我使用连接选择分组两次,但我认为这不是最好的解决方案。

代码语言:javascript
复制
SELECT Lender.name,Lend.lend,SUM(money) AS borrow

FROM lend_borrow_money_table
INNER JOIN people_table AS Borrower ON people_table.ID = lend_borrow_money_table.borrower_ID
INNER JOIN
(
    SELECT SUM(money) as lend
    FROM lend_borrow_money_table
    WHERE bill<'2018/11/31' AND bill>'2018/11/1' 
    GROUP BY lender_ID
)AS Lend ON Lend.lender_ID

INNER JOIN people_table AS Lender ON people_table.ID = lend_borrow_money_table.lender_ID

WHERE bill<'2018/12/1' AND bill>'2018/11/1' 

GROUP BY borrower_ID

我的问题是,如何使用组两次,但不与加入本身?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-05 09:04:00

你可以在下面试试

代码语言:javascript
复制
select a.name,sum(b.money) as lend, sum(c.money) as borrow, sum(b.money)-sum(c.money) as total
from people_table a
left join lend_borrow_money_table b on a.id=b.lender_ID
left join lend_borrow_money_table c on a.id=c.borrower_ID
where bill>'20181101' and bill<'20181201' 
group by a.name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53628495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档