私はいくつかのテーブルを持っています、books, bookcategories, categories
bookcategories
との間の多対多の関係を可能にする結合テーブルbooks
ですcategories
。
書籍にカテゴリが多い場合でも、書籍ごとに1行が返されるように、書籍のカテゴリ検索を実行できるようにしたいと考えています。
本
ID | Title
1 | Once upon...
2 | How many...
3 | How much...
カテゴリ
ID | Category
1 | x
2 | y
3 | z
BookCategories
BookId | CategoryId
1 | 1
1 | 2
2 | 2
2 | 3
2 | 1
3 | 1
私はこれで逃げることができると思いました:
SELECT b.Id,
b.Title,
FROM ( books b
INNER JOIN bookcategories bc ON b.ID= bc.BookId
)
WHERE (bc.categoryId =1 AND bc.categoryId=2)
GROUP BY b.Id, b.Title
しかし、ANDを追加するとすぐに、クエリは行を返しません。しかし、それは私が適用する必要のある基準です-本が上記のようにカテゴリ1と2の両方を持っている(つまり、カテゴリ1またはカテゴリ2ではない)本の行のみを返したいです
かなり基本的なものが欠けていると思わずにはいられません。誰か助けてもらえますか?
テーブルの構造を変更する必要がありますか、それとも必要なものを実現する方法がありますか。
羽