Отчет по лабораторной работе №4, "Построение запросов в режиме SQL", страница 2

FROM Book RIGHT JOIN Book_in_Lib ON Book.BookID=Book_in_Lib.BookID;

Инструкция RIGHT JOIN будет указывать на то, что все записи из таблицы Book_in_lib будут добавляться в общий набор записей, даже если в таблице Book будут отсутствовать совпадающие значения в полях BookID.

Результат этого запроса:

3.  Задание. Не используя конструктор запросов, напишите запрос, который выведет в обратном алфавитном порядке названия книг, выпущенных после 2000 года, фамилия автора у которых начинается с буквы «Г» или название издательства заканчивается буквой «а».

SELECT DISTINCT Book.Название

FROM Book

WHERE (Book.Год>2000) And (Book.Автор Like ("Г*") Or Book.Издательство Like ("*а"))

ORDER BY Book.Название DESC;

Результат:

4.  Задание. Выведите список авторов и годы, в который каждый из них опубликовал первую книгу.

Для выполнения этого задания добавим еще одну запись в таблицу Book:

SELECT Book.Автор, MIN(Book.Год) AS [Год первого издания]

FROM Book

GROUP BY Book.Автор;

В результате выполнения запроса имеем

5.  Задание. Попробуйте написать запрос, который выведет авторов книг, ни одного экземпляра которых нет в читальном зале (т.е. ни у одного экземпляра текущий статус не равен «в читальном зале»).

Для выполнения этого задания немного изменим таблицу Book_in_Lib

SELECT DISTINCT Автор

FROM (SELECT Book.Автор, Book_in_Lib.BookID

FROM Book INNER JOIN Book_in_Lib ON Book.BookID=Book_in_Lib.BookID)

WHERE BookID NOT IN (SELECT BookID FROM Book_in_Lib WHERE StatusID=3);

Результат выполения запроса: