Mysql内部查询以获取金额总和
我有三张相互关联的桌子: 1) 第一个是订单表,它包含两列,id和供应商idMysql内部查询以获取金额总和,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的外键)和产品金额列 现在我想得到所有订单的产品金额的总和,并且
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
是的,它可以工作,但它显示所有供应商产品的总产品数量,它与订单产品表不关联。我只想要订单的产品数量之和,但计算应以供应商的产品数量为基础。为了理智起见,不要使用保留字作为表/列标识符