Вывести мастеров, которые оказывали все услуги - 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 - условие, которое связывает строки из таблицы
Услуга
иЗаявка
по столбцуИдентификатор
. - Заявка.Идентификатор= Мастер.Идентификатор - условие, которое связывает строки из таблицы
Заявка
иМастер
по столбцуИдентификатор
. - ) - закрывающая скобка для подзапроса. В итоге, код выбирает мастеров, которые не имеют заявок на услуги.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д