Вывести мастеров, которые оказывали все услуги - MySQL
Формулировка задачи:
Доброго времени суток. Подскажите пожалуйста запрос:
– выведите мастеров, которые оказывали все услуги;
по данной схеме
Решение задачи: «Вывести мастеров, которые оказывали все услуги»
textual
Листинг программы
- SELECT DISTINCT
- FROM Мастер AS М
- WHERE NOT EXISTS
- (SELECT * FROM Услуга WHERE NOT EXISTS
- ( SELECT * FROM Заявка AS
- WHERE Услуга.Идентификатор=Заявка.Идентификатор AND
- Заявка.Идентификатор= Мастер.Идентификатор
- )
- )
Объяснение кода листинга программы
Код написан на SQL и предназначен для выбора мастеров, которые оказывали все услуги.
- SELECT DISTINCT - выбранные строки должны быть уникальными по всем столбцам, которые не являются частью оператора DISTINCT.
- FROM Мастер AS М - происходит выборка данных из таблицы
Мастер
и именованное соединение с ней (Мастер). - WHERE NOT EXISTS - используется для проверки наличия строк, которые удовлетворяют условию.
- (SELECT * FROM Услуга WHERE NOT EXISTS - происходит выборка данных из таблицы
Услуга
, где нет строк, которые удовлетворяют условию. - ( SELECT * FROM Заявка AS - происходит выборка данных из таблицы
Заявка
, где есть связь с таблицейУслуга
через столбецИдентификатор
. - Услуга.Идентификатор=Заявка.Идентификатор AND - условие, которое связывает строки из таблицы
Услуга
иЗаявка
по столбцуИдентификатор
. - Заявка.Идентификатор= Мастер.Идентификатор - условие, которое связывает строки из таблицы
Заявка
иМастер
по столбцуИдентификатор
. - ) - закрывающая скобка для подзапроса. В итоге, код выбирает мастеров, которые не имеют заявок на услуги.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д