我有三个表:
ITEMS
itemid | itemname
1 | Item 1
FEATURES
featureid | featurename
1 | feature1
2 | feature2
3 | feature3
4 | feature4
... | ...
ASSIGN
assignid | itemid | featureid
1 | 1 | 1
1 | 1 | 2
1 | 1 | 3
1 | 1 | 4
我想要一个查询,它会给我类似这样的结果:
ITEMS
itemid | itemname | featurename1 | featurename2 | etc
1 | Item 1 | feature1 | feature2 | etc
有没有办法在不进行第二次查询的情况下执行此操作?我发誓我只是以错误的方式思考它?有什么想法吗?
注意:特征可以是 0 到 50 个不同的特征。我的数据库设计可能是错误的吗?
最佳答案
使用您的 ASSIGN 表链接它们,然后您可以使用 GROUP_CONCAT()
来执行您想要的操作。试试这个:
SELECT
ITEMS.itemid,
ITEMS.itemname,
FEATURES.featureid,
GROUP_CONCAT(FEATURES.featurename) AS FEATURES
FROM ITEMS
JOIN ASSIGN ON ITEMS.itemid = ASSIGN.itemid
JOIN FEATURES ON FEATURES.featureid = ASSIGN.featureid
关于MySQL:如何在一个查询中使用分配表连接三个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222294/