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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - 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,515
По умолчанию

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