Вывести мастеров, которые оказывали все услуги - MySQL

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Подскажите пожалуйста запрос: – выведите мастеров, которые оказывали все услуги; по данной схеме

Решение задачи: «Вывести мастеров, которые оказывали все услуги»

textual
Листинг программы
SELECT DISTINCT 
FROM Мастер AS М
WHERE NOT EXISTS
 (SELECT * FROM Услуга   WHERE NOT EXISTS
                       ( SELECT * FROM Заявка AS 
WHERE  Услуга.Идентификатор=Заявка.Идентификатор AND
Заявка.Идентификатор= Мастер.Идентификатор
                      )
)

Объяснение кода листинга программы

Код написан на SQL и предназначен для выбора мастеров, которые оказывали все услуги.

  1. SELECT DISTINCT - выбранные строки должны быть уникальными по всем столбцам, которые не являются частью оператора DISTINCT.
  2. FROM Мастер AS М - происходит выборка данных из таблицы Мастер и именованное соединение с ней (Мастер).
  3. WHERE NOT EXISTS - используется для проверки наличия строк, которые удовлетворяют условию.
  4. (SELECT * FROM Услуга WHERE NOT EXISTS - происходит выборка данных из таблицы Услуга, где нет строк, которые удовлетворяют условию.
  5. ( SELECT * FROM Заявка AS - происходит выборка данных из таблицы Заявка, где есть связь с таблицей Услуга через столбец Идентификатор.
  6. Услуга.Идентификатор=Заявка.Идентификатор AND - условие, которое связывает строки из таблицы Услуга и Заявка по столбцу Идентификатор.
  7. Заявка.Идентификатор= Мастер.Идентификатор - условие, которое связывает строки из таблицы Заявка и Мастер по столбцу Идентификатор.
  8. ) - закрывающая скобка для подзапроса. В итоге, код выбирает мастеров, которые не имеют заявок на услуги.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы