これは、結合を使用して行うことができます:
select bmk2.book
from customer_books cb
inner join book_meta_keyword bmk1
on bmk1.book = cb.book
inner join book_meta_keyword bmk2
on bmk2.meta_keyword = bmk1.meta_keyword
and bmk2.book <> bmk1.book
where cb.customer = 1
クエリは、顧客1が購入した本から始まり、対応するキーワードを持ってきて、最後に、共通のキーワードを持つ他のすべての本を取得します。
注:
-
書籍全体で一致するキーワードが複数ある場合は、結果セットに重複が表示されます。その場合は、
select distinct
を使用してください -
テーブル
book
は必要ありません 希望する結果を得るには、何らかの理由で必要な場合は、もう1回参加することで結果を得ることができます