对订单进行分组并获取每个订单的产品列表
Posted
技术标签:
【中文标题】对订单进行分组并获取每个订单的产品列表【英文标题】:Group orders and get a list of the products of each order 【发布时间】:2021-10-19 11:52:33 【问题描述】:我有一个包含 3 个表的数据库:user、orders、products 和 order_products:
我尝试获取订单及其产品,然后按 order.id 对它们进行分组:
SELECT `orders`.*, `product`.*
FROM `product`, `orders`
JOIN `order_products` op ON op.orderid=orders.id
GROUP BY orders.id
但它只会让我得到每个订单的最后一个产品。 是否可以单独获取每个订单以及该订单的产品列表?我真的需要你的帮助。
【问题讨论】:
删除 GROUP BY 发布样本数据和预期结果以阐明您想要什么。 今日提示:随处切换到现代、明确的JOIN
语法。更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接
【参考方案1】:
如果您只想要一列,例如将产品标题连接成一个字符串(这是对您问题标题的合理解释),那么您可以使用group_concat()
:
SELECT o.*, GROUP_CONCAT(p.title)
FROM orders o JOIN
order_products op
ON op.orderid = o.id JOIN
product p
ON op.productid = p.productid
GROUP BY o.id;
【讨论】:
以上是关于对订单进行分组并获取每个订单的产品列表的主要内容,如果未能解决你的问题,请参考以下文章