2012-05-02 30 views
1

我試圖選擇存儲在列表中不同表格中的ID列表中的產品名稱。有20列查找,所以我的正常方法會作出一個巨大的查詢。有人可以建議一個簡單的方法來做到這一點?mySQL多重交叉引用選擇查詢

Table1: 
id | productName 

Table2 
id | p1 | p2 | p3 | p4... up to p20 

P1 - P20各自含有產物的ID號碼從表1

我需要選擇在表2的行,從表1

由於與相應的產品名稱替換P1-P20!

+1

您是否在尋找一個簡潔的查詢或簡單的? –

回答

1

有人可以建議一個簡單的方法來做到這一點?

我想這是一個簡單的方式

SELECT 
    Table2.id, 
    T1.productName, 
    T2.productName, 
    T3.productName, 
    -- etc... 
FROM Table2 
JOIN Table1 T1 ON Table2.p1 = T1.id 
JOIN Table2 T2 ON Table2.p1 = T2.id 
JOIN Table3 T3 ON Table2.p1 = T3.id 
-- etc... 

是的,這是一個巨大的查詢,但它很簡單。


您可能想重新考慮您的數據庫設計。這裏有一個建議:

Table1: 
id | productName 

Table2 
id | index | productid 
1 1  p1 
1 2  p2 
1 3  p3 
...etc 

查詢是這樣的:

SELECT id, index, productName 
FROM Table2 
JOIN Table1 
ON Table2.productid = Table1.id 
+0

是的,這是我在問題中提出的'正常'方法。我不知道是否有一種更方便的方式? – cronoklee

+0

@cronoklee:一種令人愉快的方式是使用不同的表格設計。 –

+0

是的,我會得出同樣的結論 - 新的桌子設計可能是最好的選擇 – cronoklee