2013-03-06 86 views
1

我2代表幾乎相同的結構:MySQL的接合2個表

products

----------------------------- 
ID | OrderNo | Name | Size 
----------------------------- 
1 | 1000 | TShirt | S 
----------------------------- 

variants
(關係:variantsMasterID = productsID。)

------------------------------- 
ID | MasterID | OrderNo | Size 
------------------------------- 
1 | 1  | 1001 | M 
------------------------------- 
2 | 1  | 1002 | L 
------------------------------- 

現在我需要得到以下結果:
(我需要products每一行和每一variants行)

1000 | TShirt | S 
------------------ 
1001 | TShirt | M 
------------------ 
1002 | TShirt | L 
... 

我試圖像這樣:

SELECT p.OrderNo, p.Name, p.Size FROM products p 
UNION 
SELECT v.OrderNo, p.Name, v.Size FROM variants v 

有沒有更好的方式來做到這一點? 結果是正確的,但有點慢(products中的13000行和variants中的5000行)。

+0

是'1000 | T恤| S'一個錯字?產品或變體表中沒有「1000」。 – 2013-03-06 15:00:26

+0

是的,改變了它。對不起,我的錯 – frgtv10 2013-03-06 15:01:53

+0

這兩個表之間有什麼關係? – 2013-03-06 15:04:56

回答

0
SELECT p.OrderNo, p.Name, v.Size 
FROM products p 
LEFT OUTER JOIN variants v 
ON v.MasterID = p.ID 

應該這樣做。您可能需要一個INNER JOIN而不是一個LEFT OUTER JOIN;不清楚你的問題。

+0

因爲你可以看到在'products'表中還有一個字段'size'。在你的例子中,我只從變體中獲得'size'。 – frgtv10 2013-03-07 09:38:17

+0

產品Size字段總是S,還是以某種方式可預測? – Melanie 2013-03-07 16:39:55