php - 连接 2 列以创建帐户流查询

标签 php mysql

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

id     client     date              amount
1       ana       2012-01-01        5000  
2       ana       2012 02-01        10000
3       ana       2012-03-01        5000

等等..

还有另一个借方(提款)表,如下所示:

id    client      date             amount 
1       ana       2012-01-15        5000
2       ana       2012 02-15        8000
3       ana       2012-03-15        9000

等等...

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

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

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

SELECT payments.amount, payments.date withdrawals.amount, withdrawals.date
FROM payments,withdrawals 
WHERE payments.client = withdrawals.client
ORDER BY date

我尝试了 LEFT JOIN 但它给出了相同的结果:

 SELECT payments.amount, payments.date, withdrawals.amount, withdrawals.date
 FROM payments 
 LEFT JOIN withdrawals 
 ON payments.client= withdrawals.client
 ORDER BY date

请帮忙,谢谢

最佳答案

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

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

您不想进行任何类型的联接,因为每一行的数据仅从一个表中提取,而不是从另一个表中提取。

关于php - 连接 2 列以创建帐户流查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16010215/

相关文章:

mysql - 将数据从 Talend studio 加载到 Mysql 时出错

php - 行成列查询 MySql

php - 如何避免无法为两个具有相同名称的不同类重新声明类

php - ini_set ('memory_limit' , ...) 不起作用并返回 false;不知道为什么

php - PHP 可以在 __destruct() 期间保存到文件吗

php - 查询或 Zend 框架

php - 使用 Sphinx 时从 MySQL 获取完整行数据的最有效方法是什么?

php - 使用正则表达式的深度(无限)嵌套拆分词

php - 获取数组中实例的数量(在 continue 后减去;循环中的语句)

php - 如何回显一个变量