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