sqlite3中的嵌套子查询用于更新表记录

时间:2018-09-25 07:23:57

标签: sql sqlite nested sql-update subquery

我有一个具有以下架构的sqlite数据库

Models:Table  --This table maintain all models name and their current stock
model_id   IDENTITY      NOT NULL,
model_name VARCHAR (100) NOT NULL,
created_on DATE          DEFAULT (date('NOW') ),
have_now   INT           DEFAULT 0

check_in:Table  --This table registers all models that is eneted into store
check_in_id IDENTITY,
on_date     DATE,
quantity    INT,
model_id    INT,
notes       VARCHAR (200) DEFAULT [Details not found.]

check_out : Table  --This table register all models that goes out of the store
check_out_id IDENTITY,
on_date      DATE,
model_id     INT,
quantity     INT,
notes        VARCHAR (200) DEFAULT [Details not found.]

只要有物品外出或进入,have_now都会更新以反映可用的数量。 要更新,我正在使用此查询

update models set have_now = 
( select (ins.sumOfIns - outs.sumOfOuts) balance
FROM
( select
    model_id,
    sum(quantity) sumOfIns
    FROM check_in
    where model_id = 6
    GROUP BY model_id
) ins
LEFT JOIN
(select 
    model_id, 
    sum(quantity) sumOfOuts
    FROM check_out
    where model_id = 6
    GROUP BY model_id
) outs

ON ins.model_id = outs.model_id )
where models.model_id = 6

这对于更新singel模型非常有效。 但是我需要一个查询,它将根据其签入更新所有模型 然后退房。 我可以在应用程序中以编程方式实现 通过逐个迭代thorugh model_id并将其提供给 上面的查询中,获取结果并在模型表中进行更新。

但是我敢肯定,仅使用查询也可以实现。 基本上我需要知道如何迭代模型表 获取其当前模型ID并在上面的查询中使用该ID 作为子查询并使用结果更新模型的Have_now字段

任何建议将不胜感激。

0 个答案:

没有答案