Mysql内部查询获取金额总和

时间:2014-12-08 07:53:13

标签: mysql sql select group-by sum

我有三个相互关联的表:

1)首先是订单表,其中包含2列,id和vendor_id
2)第二个表是 order_products ,其中包含订单表的产品详细信息,并且包含order_id列(订单表中id的外键)和product_id。
3)第三个表是 vendors_product ,其中包含不同供应商的产品价格,例如vendor_1的product_a为10美元,而vendor_2的product_a为20美元,因此每个供应商的相同产品价格不同。此表包含列,vendor_id(来自订单表的vendor_id的外键),product_id(order_products表中product_id的外键)和product_amount列

现在我想获得所有订单的 product_amount 的总和,并且应该基于每个订单的供应商。

我通过使用以下查询尝试过此操作,但我无法获得结果

SELECT
    a.id, a.vendor_id, (
    SELECT
        SUM(product_amount)
    FROM
        vendors_product
    WHERE
        vendor_id = a.vendor_id
        AND product_id IN (
            SELECT
                product_id
            FROM
                order_products
            WHERE
                order_id = a.id
        )
    ) as total_price
FROM
    `order` a

有人可以帮我吗???

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT o.id, o.vendor_id, SUM(product_amount) product_amount
FROM `order` o 
INNER JOIN order_products op ON o.id = op.order_id 
INNER JOIN vendors_product vp ON a.vendor_id = vp.vendor_id AND op.product_id = vp.product_id
GROUP BY o.id, o.vendor_id;

答案 1 :(得分:0)

试试这个:

SELECT a.id, a.vendor_id, SUM(product_amount) AS 'product amount'
FROM `order` a 
INNER JOIN order_products vp1 ON a.id = vp1.order_id 
INNER JOIN vendors_product vp2 ON a.vendor_id = vp2.vendor_id AND vp1.product_id = vp2.product_id
GROUP BY a.id, a.vendor_id