この問題のクエリを作成しようとしています:
すべての著者がインド国籍に属する本のみを選択するクエリを作成します。
ここで
内部結合を使用して 2 つのクエリを結合しようとしていますが、エラーが発生しています..
私のクエリは..
SELECT COUNT(*)
FROM (books_authors
WHERE books_authors.author_id IN
(
SELECT author_id
FROM obl_authors WHERE nationality='Indian'
) GROUP BY books_authors.book_id) A
INNER JOIN
(
SELECT COUNT(*)
FROM books_authors
GROUP BY books_authors.book_id
) B
ON A=B
このエラーが発生します:
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where books_authors.author_id in (select author_id from obl_authors where nation' at line 1
私は3つのテーブルobl_books、obl_authors、books_authors(リンクテーブル)を持っています..ここでやろうとしていることは、最初のクエリで、各book_idのobl_authorテーブルから国籍がインドのauthor_idの行数を取得しています
2 番目のクエリでは、特定の book_id のすべての著者の行数を取得しています。
そして、これら2つのクエリを組み合わせて、book_idのauthor_idの行数がその合計行数(2番目のクエリから取得している)と等しいことを確認したい..その後、そのbook_idを取得します.
ON 句で A=B を実行してその等価性をチェックしましたが、一致する場合 (つまり A=B) にそれらの book_id を取得するように指示するにはどうすればよいですか?