Сравнение целочисленного поля в каждой записи таблицы с суммой связанных записей в другой таблице - PullRequest
0 голосов
/ 25 июля 2011

Допустим, у меня есть эти две таблицы: Product и Storage

Product имеет ProductId и количество для каждой записи

Хранилище имеет LocationId, ProductId и QuantityAvailable для каждой записи (ProductIdэто FK к таблице продуктов).«ProductId» может храниться в нескольких «LocationId», поэтому «ProductId» и «LocationId» составляют составной первичный ключ.

Мне нужен SQL-запрос, который может определить, находится ли «Product» в хранилище,и если да, то если «Количество» в накопительном хранилище меньше, чем «Доступное количество».

Проще говоря, мне нужен список всех «Идентификаторов продукта» в таблице «Продукт», где сумма «Количество всех связанных записей в таблице хранения меньше, чем «Доступное количество» таблицы продуктов.

Как этого добиться (без изменения структуры таблицы)?

спасибо

1 Ответ

0 голосов
/ 25 июля 2011

Следующий запрос даст вам сумму количеств для каждого продукта:

select ProductID, sum(Quantity) as ProductQuantity
from
    Storage
group by
    ProductID

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

select
    *
from
    Product p
    inner join (
        select ProductID, sum(Quantity) as ProductQuantity
        from
            Storage
        group by
            ProductID) q
        on  p.ProductID = q.ProductID
where
    q.ProductQuantity < p.QuantityAvailable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...