Как создать запрос, используя разницу двух сумм в отдельных таблицах? - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь рассчитать количество, оставшееся в каждом контейнере для воды, на основе количества получаемых заправок и количества извлеченного.

На данный момент я создал свои таблицы как:

CONTAINERS
----------
ID     NUMBER
1      14F
2      12A
3      55Y

REFILLS
-------
ID     CONTAINERID     QUANTITY
1      14F             100
2      14F             10
3      12A             65

EXTRACTIONS
-----------
ID     CONTAINERID     QUANTITY
1      14F             20

Итак, мне нужен запрос, который вернет каждый контейнер с суммой, оставшейся в них, то есть в этом случае:

CONTAINERID     CURRENTQUANTITY
14F             90
12A             65
55Y             0

Где 90 - результат двух пополнений и одного извлечения в этом случае (100 + 10-20).

Мне удалось вычислить сумму всех пополнений / экстракций:

SELECT CONTAINERS.ID, SUM(REFILLS.QUANTITY) AS REFILLSQUANTITY
FROM CONTAINERS INNER JOIN REFILLS ON CONTAINERS.ID = REFILLS.CONTAINERID
GROUP BY CONTAINERS.ID;

И так же для экстракций, но я немного застрял, как их объединить и получить разницу в одном запросе. Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 17 марта 2020

В MS Access используйте left join и агрегаты:

select c.id, c.number,
       nz(refill, 0) - nz(extraction, 0) as net
from (containers as c left join
      (select containerid, sum(quantity) as refill
       from refills
       group by containerid
      ) as r
      on c.number = r.containerid
     ) left join
     (select containerid, sum(quantity) as extraction
      from extractions
      group by containerid
     ) as e
     on c.number = e.containerid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...