Php 艰难的Mysql查询

Php 艰难的Mysql查询,php,mysql,Php,Mysql,我得到了一个快速mysql查询的技能测试。我得到了以下表格: Orders OrderItems ---------------------------------------- id id date order_id(Orders.id) shipping_amount produ

我得到了一个快速mysql查询的技能测试。我得到了以下表格:

    Orders                    OrderItems
----------------------------------------                
    id                         id
    date                       order_id(Orders.id)
    shipping_amount            product_id
    order_status               price
    customer_id             quantity
我需要显示订单id和总数,包括2003年6月1日之前的发货金额和记录

输出应该是

| OrderID   | OrderTotal |
+-----------+------------+
| 13230     | $55.00     |
| 54455     | $40.00     |
| 59694     | $33.04     |
| 39495     | $21.05     |
提示是使用GROUPBY或subselect。到目前为止,我有以下声明,但不确定下一步要做什么

Select id AS OrderId,***(not sure what to do here) 
from Orders join OrderItems on Orders.id=OrderItems.id 

我得说它一定是这样的:

SELECT O.ID as OrderID, SUM(OI.price * OI.quantity) AS OrderTotal 

FROM Orders O 

INNER JOIN OrderItems OI ON O.id = OI.order_Id

WHERE date < '2003-06-01'

GROUP BY O.id

ORDER BY SUM(price * quantity) DESC

虽然不确定如何在MySQL中格式化日期,或者您是否可以在此版本中通过agregate函数进行排序,但我非常确定这是一个良好的开端。

我没有访问MySQL数据库的权限进行测试,但我可以想象它看起来像这样:

select
  o.id OrderID,
 (select sum(oi.price * oi.quantity) from order_items oi where oi.order_id = o.id) + o.shipping_amount OrderTotal
from
  orders o
where
  o.date < str_to_date('2003-06-01', '%Y-%m-%d');

这里测试的是谁的技能?为什么不演示如何获得所有订单总数,这样每个订单id将有几个总数。那么,一旦你展示了这一点,帮助指导你可能更有意义,但是,你读过关于select语句的mysql手册了吗?这毕竟是一个测试。我知道测试就是测试。我确实经常编写mysql查询,但我只是没有机会处理这种复杂的查询。我希望在这个问题上能得到一些提示。不过,谢谢你的建议……我一定会在阅读手册的同时尝试写一个你理解的问题,当你改正错误时,你都知道错误在哪里。记住,考验你的是你的技能。不要担心每一个错误都是一个很好的教训。MySQL日期恰好接受YY-MM-DD,因此您不必担心解析它。@Charles:您不能假设有人会使用这种格式-显式转换为日期/日期时间/时间戳是最安全的方法+1,BrandonOKay,在这种特殊情况下,您不需要担心解析它+1:假设OP希望看到ordertotal为零的订单,将内部联接更改为左联接,并使用COALESCE将NULL更改为零。一旦您执行一些查询,就会变得更容易:我认为这是基于问题描述的最佳答案,假设价格为每件商品。但是如果价格是数量的总成本,那么不要用价格乘以数量