首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接2列以创建账户流查询

连接2列以创建账户流查询
EN

Stack Overflow用户
提问于 2013-04-15 15:52:31
回答 2查看 78关注 0票数 0

我有两个表,一个用于客户的信用(付款),它看起来像这样:

代码语言:javascript
复制
id     client     date              amount
1       ana       2012-01-01        5000  
2       ana       2012 02-01        10000
3       ana       2012-03-01        5000

等等。

另一个用于借记(提款)的表如下所示:

代码语言:javascript
复制
id    client      date             amount 
1       ana       2012-01-15        5000
2       ana       2012 02-15        8000
3       ana       2012-03-15        9000

等等。

我想生成一个按日期对每个客户端的所有事务进行排序的查询,将两个日期列合并为一个,然后按日期排序,它应该如下所示:

代码语言:javascript
复制
date           payment     withdrawal 
2012-01-01     5000           ----
2012-01-15     -----          5000
2012-02-01     10000          ----  
2012-02-15     -----          8000
2012-03-01      5000          ----
2012-03-15     -----          9000

这就是我尝试的,但我知道它是错误的,它给出了重复的记录:

代码语言:javascript
复制
SELECT payments.amount, payments.date withdrawals.amount, withdrawals.date
FROM payments,withdrawals 
WHERE payments.client = withdrawals.client
ORDER BY date

我尝试了左连接,但它给出了相同的结果:

代码语言:javascript
复制
 SELECT payments.amount, payments.date, withdrawals.amount, withdrawals.date
 FROM payments 
 LEFT JOIN withdrawals 
 ON payments.client= withdrawals.client
 ORDER BY date

请帮忙,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-15 16:25:28

您需要执行两个简单的SELECT查询,分别针对每个表执行一个查询,然后使用UNION关键字组合结果,如下所示:

代码语言:javascript
复制
SELECT date, amount AS payment, NULL AS withdrawal FROM payments WHERE client = 'ana'
UNION ALL
SELECT date, NULL AS payment, amount AS withdrawal FROM withdrawals WHERE client = 'ana'
ORDER BY date

您不希望执行任何类型的连接,因为每行的数据只从一个表中拉出,而不是从另一个表中拉出。

票数 2
EN

Stack Overflow用户

发布于 2013-04-15 15:54:47

您正在寻找的是一个完整的外部联接:

代码语言:javascript
复制
SELECT payments.amount, payments.date, withdrawals.amount, withdrawals.date
FROM payments FULL OUTER JOIN withdrawals
  ON payments.client= withdrawals.client
Order by date

或者使用UNION (根据MySQL的需要):

代码语言:javascript
复制
SELECT payments.amount, payments.date, withdrawals.amount, withdrawals.date
FROM payments LEFT OUTER JOIN withdrawals
  ON payments.client= withdrawals.client
Order by date
UNION
SELECT payments.amount, payments.date, withdrawals.amount, withdrawals.date
FROM payments RIGHT OUTER JOIN withdrawals
  ON payments.client= withdrawals.client
Order by date
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16010215

复制
相关文章

相似问题

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