如何在这种情况下查询两个表之间的数据?

时间:2014-06-16 05:36:33

标签: mysql sql

有三个表,我主要想查询事务

User
-----
id

Debit
-----
id
amount
* user_id
create_date

Credit
------
id
amount 
* user_id
create_date

所以,我希望获得按日期订购的特定用户的交易,如下所示

  $150  1  2014-06-15   <== debit
  $200  1  2014-06-16  <===credit

问题是如何查询?我需要一起加入借记和贷记吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

使用UNION ALL而不是JOIN,因为您希望creditdebit行分开。 如果您想从中获取列,则可以额外加入表User

SELECT  d.amount, d.create_date, 'debit' transactionType,
        u.user_name
FROM    Debit d
        INNER JOIN User u
            ON d.id = u.user_id
WHERE   u.user_id = 1
UNION ALL
SELECT  c.amount, c.create_date, 'credit' transactionType,
        u.user_name
FROM    Credit c
        INNER JOIN User u
            ON c.id = u.user_id
WHERE   u.user_id = 1
ORDER   BY create_date