如何选择指定其他两个字段值的两个不同表字段相乘的SUM?

时间:2014-11-27 20:28:13

标签: mysql

基于此表架构:

products

+----+------+-------+--------+--------------+-------+-------+------+-------+
| Id | Name | Price | Detail | Product_type | Image | Color | Size | Stock |
+----+------+-------+--------+--------------+-------+-------+------+-------+

order_details

+----+------------+--------+------+-------+----------+
| Id | Product_id | Amount | Size | Color | Order_id |
+----+------------+--------+------+-------+----------+

orders

+----+-----------+------------+----------+
| Id | Client_id | Date_start | Date_end |
+----+-----------+------------+----------+

如何选择指定客户端和订单ID的SUM() products.Price * order_details.Amount(如果此功能甚至是必要的话)?

我已尝试过此查询,其中包括:

SELECT SUM((SELECT pr.Price FROM products pr WHERE pr.Id = od.Product_id) * od.Amount) AS Total 
FROM order_details od
WHERE (SELECT o.Client_id FROM orders o WHERE o.Id = $order) = $client

但它返回了错误的结果,我无法弄清楚如何做到这一点。另请注意我想使用子查询。

感谢。

1 个答案:

答案 0 :(得分:1)

不要使用子选择,使用连接:

SELECT orders.Id, SUM(products.Price * order_details.amount)
FROM orders
LEFT JOIN orders_details ON orders.Id = order_details.Order_id
LEFT JOIN products ON products.Id = order_details.Product_id
GROUP By orders.Clien_id, orders_details.Product_id