私は3つのテーブルを持っています:
author (columns: aut_id, aut_name)
book (columns: book_id, book_title)
authorbook (linking table, columns: aut_id, book_id)
各著者は、1冊以上の本に関連付けることができます。
各本は、1人以上の著者に関連付けることができます。
名前と著者の正確な数で本を選択したいと思います。
テーブル構造:
author
aut_id | aut_name
1 Aname
2 Bname
3 Cname
book
book_id | book_title (the titles are identical on purpose)
1 Atitle
2 Atitle
3 Atitle
authorbook
aut_id | book_id
1 1
1 2
2 2
1 3
2 3
3 3
これが私のコードです(わかりやすくするために作成者の表を省略しました):
SELECT authorbook.book_id
FROM authorbook
INNER JOIN book
ON authorbook.book_id = book.book_id
WHERE book_title='Atitle'
AND FIND_IN_SET (authorbook.aut_id,'1,2')
GROUP BY authorbook.book_id
HAVING (COUNT(authorbook.aut_id)=2)
問題:このコードはauthorbook.book_id(2)
、TWOauthorbook.aut_ids (1,2)
だけでなく、authorbook.book_id(3)
THREEでも目的のコードを返しますauthorbook.aut_ids (1,2,3)
。
質問:条項SELECT
内の著者に正確に関連付けられている(追加の著者がいない)本を作成するにはどうすればよいですか?FIND_IN_SET
あなたの助けをどうもありがとう!