艰难的Mysql查询

时间:2010-07-27 01:06:34

标签: php mysql

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

    Orders                    OrderItems
----------------------------------------                
    id                         id
    date                       order_id(Orders.id)
    shipping_amount            product_id
    order_status               price
    customer_id             quantity

我需要在2003年6月1日之前显示订单ID和总数(包括运费)和记录。

输出应该是......

| OrderID   | OrderTotal |
+-----------+------------+
| 13230     | $55.00     |
| 54455     | $40.00     |
| 59694     | $33.04     |
| 39495     | $21.05     |

提示是使用Group by或subselect。到目前为止,我有以下声明,但不知道下一步该做什么。

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

2 个答案:

答案 0 :(得分:4)

我无法访问要测试的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');

答案 1 :(得分:2)

我说它看起来应该是这样的:

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函数订购,但我很确定这是一个好的开始。