我有三个相互关联的表:
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
有人可以帮我吗???
答案 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