使用下表:
products
product_id | name
1 | Jeans
2 | t-shirt
options
option_id | product_id | option_name | option_value
1 | 1 | size | 32
2 | 1 | colour | blue
3 | 1 | price | 100
4 | 2 | colour | red
我想对产品运行查询并返回包含产品数据和该产品选项的单行。问题是产品和选项之间的一对多关系。
这可能无论如何可能将它们分组或在每个选项的结果中有多个列吗?
答案 0 :(得分:0)
使用GROUP_CONCAT
。
SELECT p.product_id, p.name, GROUP_CONCAT(CONCAT(o.option_name, ' ', o.option_value)) AS options
FROM products AS p
LEFT JOIN options AS o ON p.product_id = o.product_id
GROUP BY p.product_id
我使用LEFT JOIN
,因此仍会列出没有选项的产品(空options
列)。如果您不想在结果中看到这些产品,请使用INNER JOIN
。