我已经能够选择这些数据,使用这两个 sql 查询
查询 1:
SELECT article_id, amount_required, amount_sold FROM products_articles,sales WHERE sales.product_id = products_articles.product_id
查询 2:
SELECT * FROM articles
我想要做的是查看第一个表(包含已售出和需要的数量)(有重复的行很好),并对表中的每一行乘以 amount_sold 和 amount_required 的值,然后减去该值来自第二个表中 id 匹配的 amount_in_stock 的值。
第一行的例子: 2 * 4 = 8,将 amount_in_stock 从 124 更改为 116。 等等……
如何仅使用 sql 执行此操作?
答案 0 :(得分:2)
UPDATE A
SET
A.amount_in_stock =(S.amountSold * S.amount_required)- A.amount_in_stock
FROM articles AS A
INNER JOIN
products_articles AS PA
ON PA.article_id= A.article_id
INNER JOIN Sales AS S
ON S.product_id=PA.product_id
答案 1 :(得分:1)
请试试这个:
Update articles a
inner join
(
SELECT article_id, sum(amount_required) amount_required, sum(amount_sold )amount_sold FROM products_articles inner join sales on sales.product_id = products_articles.product_id
group by article_id
)b on a.article_id=b.article_id
set a.amount_in_stock=a.amount_in_stock-(amount_required*amount_sold )
因为 product_articles 和 amount_sold 中可能有多行,所以我使用 group by 来总结数量。
对于 SQLite,请试试这个:
Update articles
set amount_in_stock=(SELECT sum(amount_required) * sum(amount_sold ) FROM products_articles inner join sales on sales.product_id = products_articles.product_id
where products_articles.article_id=articles.article_id
group by article_id
)
where exists (SELECT * FROM products_articles inner join sales on sales.product_id = products_articles.product_id where products_articles.article_id=articles.article_id
)