mySQL 多交叉引用选择查询



我正在尝试选择存储在不同表列中的ID列表中的产品名称。有 20 列要查找,所以我的正常方法会进行大量查询。有人可以建议一种简单的方法来做到这一点吗?

Table1:
id | productName
Table2
id | p1 | p2 | p3 | p4... up to p20

p1 - p20 各包含表 1 中产品的 ID 号

我需要选择表 2 中的行,将 p1-p20 替换为表 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

最新更新