【问题标题】: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 语法。更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接

标签: mysql sql join select group-by


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 2022-06-16
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2014-05-04
    • 2014-03-07
    相关资源
    最近更新 更多