MySQL加入where和group查询

时间:2017-08-21 23:22:15

标签: mysql

我目前正在显示总订单价值订单数量按订单被标记为已发送的日期分组,限制为5.此数据来自我的'订单'表。

SELECT COUNT(orders_id) AS order_qty,
DATE_FORMAT(last_modified, "%a %D %b") AS day,                   
SUM(order_total) AS daily_total
FROM orders
WHERE orders_status = 3
GROUP BY DATE(last_modified)
ORDER BY DATE(last_modified) DESC
LIMIT 5

结果示例:

  • 8月21日星期一:200.12英镑(10个订单)
  • 8月17日星期四:£210.34(11个订单)
  • 8月15日星期二:£220.56(12个订单)
  • 8月14日星期一:230.78英镑(13个订单)
  • 8月9日星期三:240.99英镑(14个订单)

我想要包含这些订单中包含的商品总数。这些数据存储在我的'orders_products'表中。在此表中,我有一个名为 products_quantity 的列,如果订单号包含在原始查询中,我需要SUM。

我知道我需要使用联接,但如果订单中的 orders_status ,则不知道如何编写查询以对结果进行分组= 3 然后按发货日期分组?

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

将order_products表加入订单表并直接汇总。

这可能有效,我猜测order_products中的字段名称:

SELECT COUNT(orders_id) AS order_qty,
DATE_FORMAT(last_modified, "%a %D %b") AS day,                   
SUM(order_total) AS daily_total,
SUM(order_products.products_quantity) as total_items
FROM orders
LEFT OUTER JOIN order_products on order_products.orders_id=orders.orders_id
WHERE orders_status = 3
GROUP BY DATE(last_modified)
ORDER BY DATE(last_modified) DESC
LIMIT 5

联接记录将根据联接表的GROUP BY子句进行分组,并相应地汇总值。