mySQL多个交叉引用选择查询

时间:2012-05-02 17:31:43

标签: mysql

我正在尝试在不同表的列中选择作为ID列表存储的产品的名称。有20列要查找,所以我的常规方法会产生一个巨大的查询。有人可以提出一个简单的方法吗?

Table1:
id | productName

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

p1 - p20每个都包含table1

中产品的ID号

我需要在table2中选择行,用table1中相应的productName替换p1-p20

谢谢!

1 个答案:

答案 0 :(得分: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