2014-12-08 36 views
1

的总和我有是相通的三个表:Mysql的内查询以获得量

1)首先是顺序包含2列,Id和VENDOR_ID
2)第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 

有人可以帮我???

+0

对于理智的缘故,不使用保留字作为表/列标识符 – Strawberry 2014-12-08 08:12:56

回答

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; 
+0

非常感谢:)这是工作完美。 – Ankit 2014-12-08 09:10:23

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 
+0

是的,它的工作原理,但它显示的所有供应商产品的总产品量,它不与order_products表关联。我只需要订单中产品金额的总和,但计算应基于供应商的产品金额。 – Ankit 2014-12-08 08:05:19

+0

我已经更新了答案。现在检查它 – 2014-12-08 08:05:59