我正在尝试在不同表的列中选择作为ID列表存储的产品的名称。有20列要查找,所以我的常规方法会产生一个巨大的查询。有人可以提出一个简单的方法吗?
Table1:
id | productName
Table2
id | p1 | p2 | p3 | p4... up to p20
p1 - p20每个都包含table1
中产品的ID号我需要在table2中选择行,用table1中相应的productName替换p1-p20
谢谢!
答案 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