Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql内部查询以获取金额总和_Mysql_Sql_Select_Group By_Sum - Fatal编程技术网

Mysql内部查询以获取金额总和

Mysql内部查询以获取金额总和,mysql,sql,select,group-by,sum,Mysql,Sql,Select,Group By,Sum,我有三张相互关联的桌子: 1) 第一个是订单表,它包含两列,id和供应商id 2) 第二个表是订单产品,其中包含订单表的产品详细信息,并包含订单id(订单表中id的外键)和产品id列。 3) 第三个表是供应商\产品,包含不同供应商的产品价格,如供应商\ 1的产品\价格为10美元,供应商\ 2的产品\价格为20美元,因此每个供应商的相同产品价格不同。此表包含以下列:供应商id(订单表中供应商id的外键)、产品id(订单产品表中产品id的外键)和产品金额列 现在我想得到所有订单的产品金额的总和,并且

我有三张相互关联的桌子:

1) 第一个是订单表,它包含两列,id和供应商id
2) 第二个表是订单产品,其中包含订单表的产品详细信息,并包含订单id(订单表中id的外键)和产品id列。
3) 第三个表是供应商\产品,包含不同供应商的产品价格,如供应商\ 1的产品\价格为10美元,供应商\ 2的产品\价格为20美元,因此每个供应商的相同产品价格不同。此表包含以下列:供应商id(订单表中供应商id的外键)、产品id(订单产品表中产品id的外键)和产品金额列

现在我想得到所有订单的产品金额的总和,并且应该基于每个订单的供应商

我尝试使用下面的查询,但无法得到结果

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
有人能帮我吗?

试试这个:

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;
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
试试这个:

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

是的,它可以工作,但它显示所有供应商产品的总产品数量,它与订单产品表不关联。我只想要订单的产品数量之和,但计算应以供应商的产品数量为基础。为了理智起见,不要使用保留字作为表/列标识符