Запрос для SQL. Как реализовать?

140
29 апреля 2019, 22:20

Для задачи необходимо 2 таблицы:

  1. SPJ (таблица поставок: Номер поставщика n_post, Номер детали n_det, Номер изделия n_izd, Количество kol).
  2. P (таблица деталей: Номер детали n_det, Цвет color).

Задача:

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

Но как реализовать запрос? Вот, что уже есть:

SELECT DISTINCT n_izd 
FROM SPJ 
WHERE n_post in 
(SELECT n_post from SPJ 
WHERE n_det in 
(SELECT n_det FROM P 
WHERE color='Красный'));

То есть, номера поставщиков, которые поставляют детали красного цвета, найдены. Что делать дальше?

Пример входных данных:

На выход: J4

Answer 1

В общем, у меня получилось то, что нужно. Получаем все изделия "некрасных" поставщиков и исключаем их из результата:

SELECT n_izd FROM SPJ WHERE n_izd NOT IN (
    SELECT n_izd FROM SPJ WHERE n_post NOT IN (
        SELECT n_post FROM SPJ JOIN P ON P.n_det = SPJ.n_det WHERE P.color = 'Красный'
    )
) GROUP BY n_izd 

Не уверен, что это лучший запрос, который можно было составить, но он работает )

READ ALSO
Асинхронное добавление записей в MySQL

Асинхронное добавление записей в MySQL

Имеется парсер, который написан на lxml + asyncio + aiohttp, который добавляет записи в MySQL

140
Тип TEXT вместо VARCHAR(N). Быстродействие и компактность

Тип TEXT вместо VARCHAR(N). Быстродействие и компактность

Есть таблица товаров с множеством полейДля текстовых данных (название, автор, ссылка на картинку и т

150
Как сложить выборки в MySQL при условии

Как сложить выборки в MySQL при условии

Как изменить код, чтобы выборки складывались при "tb_zgrading_21Уровень знаний > 0" и "tb_zgrading_21

141
Сохранить расчетное во вью значение в таблицу в mysql

Сохранить расчетное во вью значение в таблицу в mysql

Всем привет, при работе с view в mysql столкнулся с такой ситауцией: Я создал таблицу:

155