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

时间:2015-05-20 07:13:15

标签: php mysql union

我有两张桌子;

Table 1

Table 2

我试图发表声明(如银行对帐单)以显示所有费用和所有付款。费用和付款需要根据statement_date字段以日期顺序显示。

我很确定我需要使用'工会'但我似乎无法找到解决方案。

到目前为止我的努力是;

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

提前致谢。

3 个答案:

答案 0 :(得分:3)

感谢您的帮助。以下查询对我有用;

$count = $this->Article->find(
    'count', 
    array(
        'conditions' => array(
            'Live >=' => 'CURDATE()'
        )
    )
);

答案 1 :(得分:2)

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

您可以尝试以下代码:

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

答案 2 :(得分:0)

您的表格列数不同,因此您不能通过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