[英]Merge rows with same id but different values into single row per id
我有一个按产品 ID 查找类别的查询。 注意:某些产品可以有多个类别。 我当前的查询为不同的类别返回相同的 id
SELECT
oc_product.product_id,
oc_category_description.name
FROM
oc_product
LEFT JOIN oc_product_to_category ON oc_product.product_id = oc_product_to_category.product_id
LEFT JOIN oc_category_description ON oc_product_to_category.category_id = oc_category_description.category_id;
结果:
product_id | 分类名称 |
---|---|
100 | 贮存 |
100 | 固态硬盘 |
100 | 硬盘 |
200 | 贮存 |
200 | 固态硬盘 |
200 | 硬盘 |
我想合并具有相同 product_id 的行,并将每个 category_name 作为额外的列添加到左侧。
所需的 output:
product_id | 分类名称 | 类别名称 2 | 类别名称 3 |
---|---|---|---|
100 | 贮存 | 固态硬盘 | 硬盘 |
200 | 贮存 | 固态硬盘 | 硬盘 |
SQL 查询的列必须在解析查询时固定。 查询不能 append 更多列,因为它在执行期间发现数据。
您可以使用数据透视表技术,但前提是您知道每个产品的类别数量需要多少列。
我建议您像在第一个示例中那样按行获取结果,然后在客户端应用程序中编写代码以将其格式化为列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.