Как вывести записи из таблицы Книги, при условии что данная запись есть в другой таблице с статусом 2

У меня есть таблица книги, таблица выдачи

Необходимо вывести все записи из таблицы Книги при условии:

  1. Книга в таблице Books не имеет свою запись в таблице выдачи, если имеет то только те записи которые имеют статус 2

  2. То есть должно получится вот так, книга с id 5 по 14 должны выводится, а так как у книг с id 1 и 3 статус вы таблице выдача 1 , то данные записи о книге не должны выводится.

что в таблице выдача книга имеет статус 2 введите сюда описание изображения

Я пробовал вот так, но выводит только одну строку

    select * from Books
where Id = (Select IdBook From Extraditions
where IdStatus = 2)

Ожидаемый результат вот такой

введите сюда описание изображения

То есть, если книга есть в таблице выдачи с статусом 1, то она должна при выводе отсеиваться, а если 2, то выводится


Ответы (2 шт):

Автор решения: alezhu

Можно через JOIN:

select * from Books inner join Extraditions
  on Extraditions.IdBook = Books.Id
  and Extraditions.IdStatus = 2
→ Ссылка
Автор решения: Akina
SELECT *
FROM books
WHERE NOT EXISTS ( SELECT NULL
                   FROM Extraditions
                   WHERE Extraditions.IdBook = Books.Id
                     AND Extraditions.IdStatus <> 2 )

Наличие любой связанной записи со статусом, не равным 2, блокирует возврат записи. Иначе (есть только связанные записи со статусом 2, или связанных записей нет вообще) запись возвращается.

→ Ссылка