如何使用 sql 而不是使用代码执行此 sql 更新?

时间:2021-03-08 16:49:21

标签: sql phpmyadmin

我已经能够选择这些数据,使用这两个 sql 查询

enter image description here

查询 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 执行此操作?

2 个答案:

答案 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
)
相关问题