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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2021, 10:02   #1
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию Sql запрос - необходимо найти всех поставщиков, которые поставляют все виды продукции в соответствии со списком

Доброго времени суток!
Если кому не очень сложно и есть желание, объясните идею создания следующего запроса.
Пусть имеется база данных, в которой есть таблица поставщиков, в ней приведены поставщики и продукция, которую они поставляют, а также ее количество. необходимо найти всех поставщиков, которые поставляют все виды продукции в соответствии со списком, список создать самостоятельно через запрос.
Я думаю что задача решается через вложенные запросы. На самом нижнем должен быть запрос на формирование списка.
Он должен бить вложен в создание списка поставщиков, которые поставляют эти детали, быстрее всего с использованием EXIST т. е получаем некоторую таблицу где указаны поставщики и типы деталей, а что делать и как, дальше бмп.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 14.04.2021, 10:45   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. все виды продукции в соответствии со списком, список создать самостоятельно через запрос.
Код:
select 'tovar_1' as tovar
union select 'tovar_2'
...
union select 'tovar_NN'
запомним сколько их у нас (NN)

2. поставщики которые поставляют указанные товары (хотя бы один из...)
Код:
select distinct tvr.tovar, postav.name
from ( -- список товаров 
           select 'tovar_1' as tovar .... ) as tvr 
inner join postav on postav.tovar =tvr.tovar
3. число товаров (разных) от каждого из них
Код:
select postav.name, count(distinct tvr.tovar)
from ( -- список товаров 
           select 'tovar_1' as tovar .... ) as tvr 
inner join postav on postav.tovar =tvr.tovar 
group by postav.name
4. только те где все товары ( число разных товаров =NN)
Код:
select postav.name, count(distinct tvr.tovar)
from ( -- список товаров 
           select 'tovar_1' as tovar .... ) as tvr 
inner join postav on postav.tovar =tvr.tovar 
group by postav.name
having count(distinct tvr.tovar) =NN
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.04.2021 в 10:48.
evg_m вне форума Ответить с цитированием
Старый 14.04.2021, 21:02   #3
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Огромное спасибо, с меня тортик. Раньше можно было нажать весы, а ныне?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По заданным таблицам ПОСТАВЩИКИ, ДЕТАЛИ, ПОСТАВКИ получить имена поставщиков, которые не поставляют красные детали Ана88 Паскаль, Turbo Pascal, PascalABC.NET 0 06.12.2015 18:19
Необходимо создать класс, содержащий по возможности все его виды элементов: поля, конструкторы, свойства TGOD C# (си шарп) 8 13.10.2014 19:43
Запрос sql. Найти людей, которые чаще всего переходят с одного тарифа на другой. GoodNight SQL, базы данных 3 28.05.2014 13:40
Дан текст. Найти множество всех слов, которые встречаются во всех предло-жениях текста. Anton94.by Помощь студентам 1 31.03.2014 15:30