Пусть имеются две таблицы, созданные на SQL Server c помощью приведённых ниже скриптов и заполненные данными. Таблица Book содержит описания изданий, таблица BookInLib – перечень экземпляров книг в библиотеке. 
 CREATE TABLE Book( 
 BookId int IDENTITY(1,1) PRIMARY KEY, 
 Author varchar(100), 
 Title varchar(255) NOT NULL, 
 Publisher varchar(50), 
 BookYear smallint ); 
 CREATE TABLE BookInLib( 
 LibID int PRIMARY KEY, 
 BookID int NOT NULL references Book(BookId), 
 StatusID int NOT NULL); 
 Требуется получить идентификаторы и названия книг (столбцы BookId и Title таблицы Book), таких, что эти книги не представлены в библиотеке (нет связанных записей в BookInLib). Из приведенного списка выберите все подходящие запросы.
Другие предметы Колледж SQL-запросы и работа с базами данных управление данными SQL Server таблицы запросы библиотека книги идентификаторы названия книг связанные записи book BookInLib
Для того чтобы получить идентификаторы и названия книг из таблицы Book, которые не представлены в библиотеке (то есть, у которых нет связанных записей в таблице BookInLib), мы можем использовать SQL-запрос с оператором LEFT JOIN или подзапрос с использованием оператора NOT EXISTS или NOT IN.
Вот пошаговое объяснение, как мы можем решить эту задачу:
Мы можем выполнить LEFT JOIN между таблицами Book и BookInLib. Это позволит нам получить все записи из таблицы Book и соответствующие записи из таблицы BookInLib. Если для книги нет записи в BookInLib, то соответствующие поля будут NULL.
Пример запроса:
            SELECT b.BookId, b.Title
            FROM Book b
            LEFT JOIN BookInLib bl ON b.BookId = bl.BookID
            WHERE bl.BookID IS NULL;
        
    В этом случае мы будем проверять, существует ли запись в таблице BookInLib для каждой книги. Если записи нет, то книга будет включена в результат.
Пример запроса:
            SELECT b.BookId, b.Title
            FROM Book b
            WHERE NOT EXISTS (
                SELECT 1
                FROM BookInLib bl
                WHERE bl.BookID = b.BookId
            );
        
    Этот метод также позволяет получить книги, которые отсутствуют в библиотеке, путем проверки, не содержится ли идентификатор книги в списке идентификаторов книг из таблицы BookInLib.
Пример запроса:
            SELECT b.BookId, b.Title
            FROM Book b
            WHERE b.BookId NOT IN (
                SELECT bl.BookID
                FROM BookInLib bl
            );
        
    Все три метода приведут к одному и тому же результату, но использование LEFT JOIN или NOT EXISTS обычно считается более оптимальным и предпочтительным в большинстве случаев, особенно если таблицы большие. Вы можете выбрать любой из предложенных вариантов в зависимости от ваших предпочтений и требований к производительности.