Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从两个不同的表中选择行,但使用php和MySQL按日期排序_Php_Mysql_Union - Fatal编程技术网

从两个不同的表中选择行,但使用php和MySQL按日期排序

从两个不同的表中选择行,但使用php和MySQL按日期排序,php,mysql,union,Php,Mysql,Union,我有两张桌子 我正试图制作一份类似银行对账单的对账单,以显示所有费用和所有付款。费用和付款需要根据对账单\日期字段按日期顺序显示 我很确定我需要使用“工会”,但我似乎找不到解决办法 我迄今为止的努力是 $statement_sql = "(SELECT * FROM accounts_tenant_charge) UNION (SELECT * FROM accounts_tenant_payment) ORDER BY statement_date"; 提前感谢。您必须进行嵌套查询。首先,根

我有两张桌子

我正试图制作一份类似银行对账单的对账单,以显示所有费用和所有付款。费用和付款需要根据对账单\日期字段按日期顺序显示

我很确定我需要使用“工会”,但我似乎找不到解决办法

我迄今为止的努力是

$statement_sql = "(SELECT * FROM accounts_tenant_charge)
UNION
(SELECT * FROM accounts_tenant_payment)
ORDER BY statement_date";

提前感谢。

您必须进行嵌套查询。首先,根据表进行联合查询,并放入内部查询。然后,进行SELECT查询并将其放入外部。不要忘记为外部查询提供别名表

您可以尝试以下代码:

SELECT * FROM
(
  (SELECT * FROM accounts_tenant_charge)
   UNION
  (SELECT * FROM accounts_tenant_payment)
) a 
ORDER BY a.statement_date ASC

您必须进行嵌套查询。首先,根据表进行联合查询,并放入内部查询。然后,进行SELECT查询并将其放入外部。不要忘记为外部查询提供别名表

您可以尝试以下代码:

SELECT * FROM
(
  (SELECT * FROM accounts_tenant_charge)
   UNION
  (SELECT * FROM accounts_tenant_payment)
) a 
ORDER BY a.statement_date ASC

您的表具有不同的列数,因此无法通过执行select*立即合并它们。您必须从两个表中选择相同数量的列。比如:

select
  tenant_charge_id as `id`,
  tenant_charge_date as `date`,
  tenant_charge_total_amonunt as `amount`
union
select
  tenant_payment_id,
  tenant_payment_date,
  tenant_payment_amount
order by
  `date` asc

您的表具有不同的列数,因此无法通过执行select*立即合并它们。您必须从两个表中选择相同数量的列。比如:

select
  tenant_charge_id as `id`,
  tenant_charge_date as `date`,
  tenant_charge_total_amonunt as `amount`
union
select
  tenant_payment_id,
  tenant_payment_date,
  tenant_payment_amount
order by
  `date` asc

谢谢你的帮助。下面的问题对我有用

SELECT tenant_charge_date as statement_date, tenant_charge_id as reference, tenant_charge_total_amount as debit, NULL as credit, 'Charge' as type FROM accounts_tenant_charge
UNION ALL
SELECT tenant_payment_date as statement_date, tenant_payment_id as reference, NULL as debit, tenant_payment_amount as credit, 'Payment' as type FROM accounts_tenant_payment
ORDER BY statement_date

谢谢你的帮助。下面的问题对我有用

SELECT tenant_charge_date as statement_date, tenant_charge_id as reference, tenant_charge_total_amount as debit, NULL as credit, 'Charge' as type FROM accounts_tenant_charge
UNION ALL
SELECT tenant_payment_date as statement_date, tenant_payment_id as reference, NULL as debit, tenant_payment_amount as credit, 'Payment' as type FROM accounts_tenant_payment
ORDER BY statement_date

到目前为止,我刚刚添加了我的查询,谢谢。您对此声明有什么错误?没有图片,谢谢。我假设你的桌子看起来像你展示的一样。那么您就不能合并两个列数或列类型不同的结果集。@xNeyte没有错误,只是没有返回行。到目前为止,我刚刚添加了我的查询,谢谢。这个语句有什么错误?没有图片,谢谢。我假设你的桌子看起来像你展示的一样。那么您就不能合并两个列数或列类型不同的结果集。@xNeyte没有错误,只是没有返回行。不幸的是,这段代码不能工作。它没有显示错误,但也没有显示任何行。请确保您的列已选择。如果您有不同的列数,请不要在内部查询中使用select*。不幸的是,此代码无法正常工作。它没有显示错误,但也没有显示任何行。请确保您的列已选择。如果列数不同,请不要在内部查询中使用select*