Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2016, 11:14   #1
Krezo
 
Регистрация: 14.09.2016
Сообщений: 4
По умолчанию Помогите с запросом - в таблице "Размещение" (placement) нужно найти стеллажи на которых нет указанных изделий

Есть таблица "Размещение" (placement). В ней хранятся данные о размещении продуктов,производителей,стеллажей( их id) и количестве продуктов. Нужно найти стеллажи на которых нет указанных изделий. Изделий (или продуктов)может быть много
Изображения
Тип файла: png photo.PNG (27.4 Кб, 43 просмотров)
Тип файла: png photo2.PNG (24.8 Кб, 43 просмотров)
Тип файла: png photo3.PNG (14.1 Кб, 44 просмотров)

Последний раз редактировалось Krezo; 14.09.2016 в 12:02.
Krezo вне форума Ответить с цитированием
Старый 14.09.2016, 11:29   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
select * 
from ...... --все стеллажи
where id not in --за исключением 
         ( select id -- список стеллажей с указанными продуктами
           from .....
           where ... -список продуктов )
Код:
select  *
from  ..... as t --все стеллажи
where not exists  --НЕ содержит
         ( select 1
           from ....... as r
           where ... -список продуктов
              and t.id =r.id -- и это тот самый (один текущий) стеллаж
         )
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 14.09.2016, 12:29   #3
Krezo
 
Регистрация: 14.09.2016
Сообщений: 4
По умолчанию

Спасибо, разобрался
Krezo вне форума Ответить с цитированием
Старый 18.09.2016, 10:56   #4
Krezo
 
Регистрация: 14.09.2016
Сообщений: 4
По умолчанию Помогите с запросом

Требуется найти стеллажи(stack) на которых есть изделия(product) всех производителей(producer). Есть связующая таблица 'placement', которая показывает какая продукт, на каком стеллаже находится, какой у него производитель, и в каком количестве. Во вложении приведены три таблицы: 'placement', 'stack', 'producer'.
Изображения
Тип файла: png Снимок.PNG (26.9 Кб, 42 просмотров)
Тип файла: png Снимок 1.PNG (25.9 Кб, 41 просмотров)
Тип файла: png Снимок 2.PNG (19.1 Кб, 42 просмотров)
Krezo вне форума Ответить с цитированием
Старый 20.09.2016, 10:53   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
select  stackid, --на конкретном стеллаже
count(distinct produceid) --число(count) различных(distinct) производителей(produceid)
from .........
group by stackid --для каждого стеллажа
having count(distinct produceid)=NN --и это ровно столько производителей сколько надо (NN)
Код:
select .........
from ........ as t
inner join ( -- см. первый запрос 
                select stackid, count(distinct produceid) as n
                from
                group by stackid
                having count(...) =NN 
             ) as m on m.stackid =t.stackid
Все это есть тут Мартин Грубер Понимание SQL. (на форуме бывали(и есть) ссылки для скачивания).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.09.2016, 10:59   #6
Krezo
 
Регистрация: 14.09.2016
Сообщений: 4
По умолчанию

Спасибо. Не думал, что так просто можно сделать. Мне совсем не то в голову приходит. За книгу спасибо, посмотрю
Krezo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти непрерывный участок из 10 элементов, сумма которых максимальна fool.rzn Паскаль, Turbo Pascal, PascalABC.NET 21 13.06.2016 21:57
Дан двумерный массив нужно найти номера строк, элементы которых образуют убывающую с++ yurda Помощь студентам 0 24.05.2015 18:38
Дан вещественный вектор A(n). Нужно найти количество элементов в векторе, абсолютная величина которых больше 7 (Паскаль) vladicvladic123 Помощь студентам 4 03.12.2013 19:23
Как редактировать данные в таблице созданной запросом? majjestik C++ Builder 0 05.06.2013 21:55