2014-01-15 52 views
1

我想我要什麼有事情做與工會和/或加入但我不能弄清楚如何做到這一點,到目前爲止,所以這是我尋求幫助。混合多個表到一個

我有一些表有不同的數據,但結構完全相同,我想混合成一個。可以說我有2個這樣的桌子。

Store_1

 
Product  Quantity 
--------  ---------- 
AAA   25 
BBB   15 

STORE_2

 
Product  Quantity 
--------  ---------- 
AAA   10 
CCC   40 

什麼,我想爲這兩個表的結構是這樣的:

 
Product  Store_1_Quantity  Store_2_Quantity 
--------  ----------------  ---------------- 
AAA   25     10 
BBB   15     Null/0 
CCC   Null/0    40 

,這是不僅限於兩個表。實際上,對於某些情況下,我需要將10個表組合成一個,以便提供任何想法?

+0

嘗試使用交叉連接 –

回答

0

您將需要兩個聯盟左連接。試試這個:

SELECT p.*, store_1.quantity AS Store_1_Quantity, store_2.quantity AS Store_2_Quantity 
FROM (SELECT Product FROM Store_1 UNION SELECT Product FROM Store_2) AS p 
LEFT JOIN Store_1 
ON p.product = Store_1.product 
LEFT JOIN Store_2 
ON p.product = Store_2.product 

工作演示:http://sqlfiddle.com/#!2/8f4bc1/3

+0

THX的快速反應伴侶。因此,如果需要添加一個或多個商店到查詢這樣的工作。 'SELECT p。*,store_1.quantity AS Store_1_Quantity,store_2.quantity AS Store_2_Quantity,store_3.quantity AS Store_3_Quantity FROM(SELECT Product FROM Store_1 UNION SELECT Product FROM FROM_2 UNION SELECT Product FROM FROM_3)AS p LEFT JOIN Store_1 ON p 。產品= Store_1.product LEFT JOIN STORE_2 ON p.product = Store_2.product LEFT JOIN STORE_3 ON p.product = Store_3.product' 我想這是做擴大你的代碼更門店的正確方法, 對? –

+0

@BatuZet是的,你是對的,這是添加更多商店的方式。 –

1

您需要使用full outer join。問題是MySQL本身不支持它們,但是,它們可以是使用左右連接的emulated quite easily

您的具體情況,下面的查詢應該工作:

SELECT A.PRODUCT, A.QUANTITY, B.QUANTITY FROM STORE_1 A 
LEFT JOIN STORE_2 B ON (A.PRODUCT = B.PRODUCT) 
UNION ALL 
SELECT B.PRODUCT, A.QUANTITY, B.QUANTITY FROM STORE_1 A 
RIGHT JOIN STORE_2 B ON (A.PRODUCT = B.PRODUCT) 
WHERE A.PRODUCT IS NULL; 
+0

感謝您的快速響應隊友,它的作品像一個魅力,但如何增加一個或多個商店?如果我有「Store_3」甚至是「Store_4」,如何處理? –