Всем привет. Необходима небольшая помощь при составлении SQL-запроса?

Не силен в языке SQL, и из-за этого висит вся работа, так как результаты этого запроса необходимо выводить в с++ в DBGRID. Есть база данных склад. Мне необходимо написать SQL-запрос или SQL-функцию ( не знаю, как именно решить эту задачу), которая будет заполнять таблицу " инвентаризация"(показывает, какой товар и в каком количестве хранится на скаде в данный момент"). на скрине представлены структура бд ("товары(good)", " продажи(sale)", " поставки(delivery)", " инвентаризация(inventionary)"). Необходимо , чтобы запрос или функция подсчитывал количество(amounts) товаров на складе в данных момент. То есть если мы заносим запись в таблицу " продажа" , то значение amounts уменьшается, а если в таблицу " поставки" , то наоборот значение amounts в таблице инвентаризация увеличивается. То есть, чтобы эта таблица обновлялась, если мы вносим данные в другие. Это в принципе осуществимо? 5d039893897ad524414803.png
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@Hedy
Сделать inventory как VIEW с похожей логикой:

with 
d as (
select idGood, sum(amount) total from delivery group by idGood
),
s as (
select idGood, sum(amount) total from sale group by idGood
)
select d.idGood, d.total - isnull(s.total, 0) as amounts
from d left join s on s.idGood = s.idGood


Либо навесить триггеры пересчета на delivery и sales.

До конца не понятно, что нужно в итоге. Похоже на лабораторную в универе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега SQL
Седой и строгий
Да, это осуществимо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы