Главная / SQL: основы / Отношение Worker имеет схему: [картинка] Worker: Worker_id (int, PK), Worker_name, Position, Salary, Commission_pct, Branch_id (int, FK) Отношение Skills имеет схему: Skills: Skill_id (int PK), Skill_title (varchar) Отношение Worker_skill имеет схему: Wor

Отношение Worker имеет схему: files Worker: Worker_id (int, PK), Worker_name, Position, Salary, Commission_pct, Branch_id (int, FK)

Отношение Skills имеет схему:

Skills: Skill_id (int PK), Skill_title (varchar)

Отношение Worker_skill имеет схему:

Worker_skill: Worker_id (int PK FK), Skill_id (int PK FK)

Запрос предназначен для отображения имен сотрудников, которые обладают навыком "Java programming":

SELECT Worker_name FROM Worker w JOIN Worker_skill ws ON w.Worker_id = ws.Worker_id WHERE EXISTS (SELECT * FROM Skills WHERE Skill_title = ‘Java programming’)

При выполнении данного запроса отбирается избыточное количество строк, т.е. имена даже тех сотрудников, которые не обладают заданным навыком. Объясните причину отклонения получаемого результата от ожидаемого результата.

вопрос

Правильный ответ:

если запрос содержит оператор JOIN, то следующий далее оператор EXISTS игнорируется
для вставки дополнительного условия соединения вместо оператора WHERE следовало использовать оператор AND
в подзапросе EXISTS пропущено условие: ws.Skill_id = Skills.Skill_id
вместо оператора EXISTS в данном примере следовало использовать оператор PERSISTS
Сложность вопроса
74
Сложность курса: SQL: основы
56
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Я сотрудник деканата! Немедленно уничтожьте ответы на интуит. Умоляю
06 янв 2018
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.