Узнайте, сколько книг в базе данных не входит в заказ.Использование подзапроса с NOT IN
Запрос:
SELECT COUNT(title)
FROM book INNER JOIN orders ON book.isbn = orders.bookID
WHERE isbn NOT IN (bookID);
Узнайте, сколько книг в базе данных не входит в заказ.Использование подзапроса с NOT IN
Запрос:
SELECT COUNT(title)
FROM book INNER JOIN orders ON book.isbn = orders.bookID
WHERE isbn NOT IN (bookID);
Я бы наклониться от использования NOT IN
здесь. Научитесь использовать JOIN
:.
SELECT Count(*)
FROM
book AS B
LEFT JOIN orders AS O
ON B.isbn = O.bookID
WHERE
O.isbn IS NULL
;
А также (не 100% уверен, что это будет работать в Access, но я так думаю):
SELECT Count(*)
FROM
book AS B
WHERE
NOT EXISTS (
SELECT *
FROM orders AS O
WHERE B.isbn = O.bookID
)
;
Обратите внимание, что вам не нужно Count(title)
, Count(*)
работает отлично и не ставит под сомнение что, возможно, вы пытаетесь подсчитать количество не-NULL-титров.
Если вы хотите использовать подзапрос и NOT IN, то вы должны написать так
SELECT COUNT(title)
FROM book
WHERE isbn NOT IN (SELECT bookID
FROM orders)
Пожалуйста, отредактируйте. 'NOT IN' не является функцией, это оператор (или два, в зависимости от того, как вы смотрите на него). –