Главная / SQL (Oracle): Основы / Имеется модель данных:[картинка] , где таблица Books имеет структуру: Books: Book_id (number, PK), Title (varchar2 (50)), Publishing (varchar2 (40)), Size (number), Quantity (number NOT NULL), Price (number, NOT NULL) , таблица Readers имеет структуру: Re

Имеется модель данных:files

, где таблица Books имеет структуру:

Books: Book_id (number, PK), Title (varchar2 (50)), Publishing (varchar2 (40)), Size (number), Quantity (number NOT NULL), Price (number, NOT NULL)

, таблица Readers имеет структуру:

Readers: Reader_id (number, PK), Name (varchar2 (20)), Day_Of_Birth (date), Comments (varchar2 (100)), Address (varchar2 (300)), Mobile_phone (varchar2 (20))

, таблица Reader_Book имеет структуру:

Reader_Book: Reader_id (number PK FK), Book_id (number PK FK), Quantity (number)

Запрос предназначен для отображения списка названий книг, которые выданы читателю 'Peter':

SELECT Title FROM Books b JOIN Reader_Book rb ON b.Book_id = rb.Book_id WHERE EXISTS (SELECT * from Readers r WHERE Name = 'Peter')

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

вопрос

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

если запрос содержит оператор JOIN, то следующий далее оператор EXISTS игнорируется
в подзапросе EXISTS пропущено условие: rb.Reader_id = r.Reader_id
в подзапросе EXISTS вместо символа "*" следовало использовать название столбца Name
перед ключевым словом EXISTS пропущено логическое отрицание NOT
Сложность вопроса
75
Сложность курса: SQL (Oracle): Основы
67
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Экзамен прошёл на пять с минусом. лол
21 авг 2020
Аноним
Благодарю за подсказками по intiut'у.
23 авг 2018
Оставить комментарий
Другие ответы на вопросы из темы базы данных интуит.