Вложенный подзапрос в sqlite3 для обновления записи таблицы - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть база данных 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

. Любое предложение будет оценено.

...