问题描述
ALTER TABLE Store ADD TotalGoodsPrice INTEGER
CREATE VIEW V AS
SELECT Stock.Store_id,SUM(PRICE*COUNT) total FROM STOCK JOIN PRODUCT
ON STOCK.PRODUCT_CODE = PRODUCT.CODE
GROUP BY Store_id
UPDATE STORE SET STORE.TotalGoodsPrice = V.total
FROM STORE JOIN V ON v.STORE_ID = STORE.ID
所以我有这段代码来更新TotalGoodsPrice
,我想基于TotalGoodsPrice
来更改Store.ID
的每条记录,但是它不会让我更改。我只想到了SELECT MAX(V.total)
,但这只给了我最高的分数。
解决方法
我怀疑您想要update ... join
语法。想法是使用子查询从stock
和product
表中计算每个商店的总库存值,然后联接并更新store
表:
update store se
inner join (
select sk.store_id,sum(pt.price * sk.count) total
from stock sk
inner join product pt on pt.code = sk.product_code
) sk on sk.store_id = se.id
set se.totalgoodsprice = sk.total
我不得不在每一列所属的表上做一些假设。
请注意,存储此类派生信息通常不是一个好主意-您需要对其进行维护,这可能很乏味。相反,创建视图可能更简单:
create view v_store as
select
se.*,(
select sum(pt.price * sk.count)
from stock sk
inner join product pt on pt.code = sk.product_code
where sk.store_id = se.id
) totalgoodsprice
from store se