2012-10-11 122 views
0

我有兩個MySQL表:「發票」和「credit_memo」MySQL的加入兩個不同的表列出一個結果

我想將它們和列表中的一個結果是按日期順序相結合。

發票:
ID INT
日期DATETIME
CUSTOMER_ID INT

credit_memo:
ID INT
日期DATETIME
CUSTOMER_ID INT

我的最後一次嘗試:

(SELECT ID AS invoice_number FROM invoice) 
UNION 
(SELECT ID AS credit_memo_number FROM credit_memo) 
ORDER BY date 

問題是,invoice_number和credit_memo_number都被放入invoice_number變量中。所以當我運行結果時,它看起來像是從'invoice'表中找到的。

如何確定每個特定行從哪個表中拉出?

謝謝 安迪

回答

0

這裏是你將如何處理它。

兩個表都有客戶ID,所以我們可以通過加入他們的行列:

SELECT i.ID AS invoice_number,c.ID AS credit_memo_number 
FROM invoice i 
JOIN credit_memo c ON c.customer_id = i.customer_id 
ORDER BY i.date ASC 

這將選擇發票編號和發票日期的信用卡號和訂單他們。

+0

這看起來不像他想要做的。如果顧客(可以說Joe)有特定日期和兩張貸項通知單(可以說備忘錄C和D)有兩張發票(可以說是發票A和發票B),那麼最終會得到:(Joe,A,C) ,(Joe,B,C),(Joe,A,D),(Joe,B,D)。我不認爲他想要所有這些重複。客戶ID在這裏看起來並不是一個好的加入專欄。 –

0
select id, t.table_name from invoice join information_schema.tables t on t.table_name='invoice' 
union 
select id, t.table_name from credit_memo join information_schema.tables t on t.table_name='credit_memo'