У меня есть база данных 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
, это хорошо работает для обновления модели сингла.Однако мне нужен запрос, который обновит все модели в зависимости от их регистрации.Я могу достигнуть этого программно в приложении, перебирая торагоду model_id один за другим и передавая его в вышеупомянутый запрос, получая результат и обновляя его в таблице моделей.
Но я уверен, что это также может быть достигнуто только с помощью запроса.По сути, мне нужно знать, как выполнить итерацию таблицы модели, получить ее текущий идентификатор модели и использовать этот идентификатор в запросе выше в качестве подзапроса, а также использовать результат для обновления поля модели have_now
. Любое предложение будет оценено.