3 つのテーブル obl_books、obl_authors、およびリンク テーブル books_authors があります。問題は、すべての著者がインド国籍に属する本のみを選択するクエリを作成することです。
そして、私がこれのために書いたクエリは
SELECT obl_books.*, books_authors.author_id
FROM books_authors,obl_authors,obl_books
WHERE books_authors.author_id = obl_authors.author_id
AND books_authors.book_id=obl_books.book_id
GROUP BY books_authors.book_id
HAVING books_authors.author_id IN (SELECT obl_authors.author_id FROM obl_authors WHERE nationality='Indian')
国籍は obl_authors テーブルの列であり、本には多くの著者が含まれる場合があります。
したがって、book_id (2) に author_id (1)、author_id (2) があり、author_id (1) と (2) がインド人である場合、それを返す必要があり、著者の 1 人でもインド人でない場合は返されません。
しかし、私のクエリはその book_id も返します。
INの代わりにALLキーワードを使用してhaving句を変更しましたが、行が返されません。