Mysqli Select语句计算总订单并显示所有订购的产品

时间:2013-12-26 10:18:27

标签: php mysqli count group-by left-join

使用下面的select语句,我可以很好地查看所有订单。但我想要实现的是在一个选择语句中获取所有总计和单个订购的产品。也许订购的产品可以放在一个数组?如果可以的话,我也想知道打印这些产品的方法。

任何人都可以提出建议吗? 提前谢谢。

SELECT语句:

SELECT order.order_id, DATE_FORMAT(order.date_added,'%Y/%m/%d - %H:%i'), 
  COUNT(order_product.order_id),
  SUM(order_product.quantity),
  SUM(order_product.cost)
FROM order
LEFT JOIN order_product ON order.order_id = order_product.order_id
GROUP BY order_product.order_id ORDER BY date_added DESC

1 个答案:

答案 0 :(得分:1)

GROUP_CONCAT可能是最合适的东西。它会将多个值连接成一个字符串列。例如:

SELECT order.order_id, DATE_FORMAT(order.date_added,'%Y/%m/%d - %H:%i'), 
  GROUP_CONCAT(order_product.name SEPARATOR ', ') AS Products,
  COUNT(order_product.order_id) AS NumberOfLines,
  SUM(order_product.quantity) AS TotalQuantity,
  SUM(order_product.cost) AS TotalCost
FROM order
LEFT JOIN order_product USING(order_id)
GROUP BY order_product.order_id 
ORDER BY date_added DESC

您也可以使用单个逗号的分隔符(默认值为),然后在PHP中使用explode(',', $products)来获取产品名称数组。

相关问题