0

我有以下情况。

组合表:
Combination ID | Option ID's

选项表:
Option ID | Option Name | Option Value

当引用与组合关联的两个选项时,组合表中的“选项 ID”列读取为“2345,3421”(在一列中)。

是否可以生成一个列表,列出所有可能的组合和每个组合的值?

IE。combination1 | option1 | name:size | value:Small | option2 | name:color | value:Blue

4

1 回答 1

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
于 2012-05-21T06:47:13.443 回答