2012-05-13 45 views
-2

比方說,我有2個具有表SQL - 結合2表拿到1個表結果

銷售

ProductName SellingDate ProductID 
iPhone 4G  2011-05-11  1 
iPhone 4S  2011-05-12  2 
iPhone 4S  2011-05-13  2 
iPhone 4G  2011-05-15  1 

購買

ProductName BuyingDate ProductID 
iPhone 4S  2011-05-09  2 
iPhone 4G  2011-05-10  1 
iPhone 4G  2011-05-13  1 
iPhone 4G  2011-05-14  1  

如何合併這日期是這樣嗎?

ProductName Date   Status  ProductID 
iPhone 4G  2011-05-10 Buying  1 
iPhone 4G  2011-05-11 Selling  1 
iPhone 4G  2011-05-13 Buying  1 
iPhone 4G  2011-05-14 Buying  1 
iPhone 4G  2011-05-15 Selling  1 

我沒有任何想法如何2表日期(SellingDate/BuyingDate)合併爲1臺(日期)...

任何幫助,將不勝感激!

回答

1

我假設你想要的輸出不符合你給定的輸入,所以如果這只是一個情況來組合兩個表,UNION ALL應該是足夠的。

SELECT ProductName, Date, 'Buying' AS Status, ProductID FROM Buying 
UNION ALL SELECT ProductName, Date, 'Selling' AS Status, ProductID FROM Selling 

您可以使用以下方法來添加用戶可選擇的productid

SELECT ProductName, Date, 'Buying' AS Status, ProductID FROM Buying WHERE ProductID = 1 
UNION ALL SELECT ProductName, Date, 'Selling' AS Status, ProductID FROM Selling WHERE ProductID = 1 

或本

SELECT * 
FROM (
     SELECT ProductName, Date, 'Buying' AS Status, ProductID FROM Buying 
     UNION ALL SELECT ProductName, Date, 'Selling' AS Status, ProductID FROM Selling 
     ) p 
WHERE ProductID = 1 

如果確實需要那些輸出給定的輸入,你將有給我們一些額外的信息

  1. ProductID 2發生了什麼?
  2. iPhone 4S系列發生了什麼?
  3. 爲什麼不保留這些?

作爲一個便箋和未來的參考,請儘可能完整和完整。我認爲你的降薪是你的輸出不符合你的輸入的結果。

+0

iPhone 4S系列和產品ID 2只是一個例子,顯示有另一個產品.. 在我的程序中,我想根據用戶選擇的產品顯示錶.. – user1392096

+0

@ user1392096 - 所有你需要做的,然後在工會中增加一個適當的where子句,你很好去。 –

+0

你能舉個例子嗎? 因爲我是新的SQL .. – user1392096