我有以下情况。
组合表:
Combination ID | Option ID's
选项表:
Option ID | Option Name | Option Value
当引用与组合相关联的两个选项时,组合表中的“选项ID”列读取类似于“2345,3421”(在一列中)。
是否可以生成列出每种组合的所有可能组合和值的列表?
即。 combination1 | option1 | name:size | value:Small | option2 | name:color | value:Blue
答案 0 :(得分:1)
您可以尝试这样的查询 -
SELECT
c.Combination_ID, GROUP_CONCAT(CONCAT(o.Option_Name, '=', o.Option_Value))
FROM
combinations c
LEFT JOIN options o
ON find_in_set(o.Option_ID, c.Option_IDs)
GROUP BY
c.Combination_ID
同意Ian McLaird关于表格规范化的内容。
SELECT
c.Combination_ID,
GROUP_CONCAT(o.Option_Name),
GROUP_CONCAT(o.Option_Value)
FROM
combinations c
LEFT JOIN options o
ON find_in_set(o.Option_ID, c.Option_IDs)
GROUP BY
c.Combination_ID