Můžete to udělat pomocí připojení:
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
Dotaz začíná knihami, které si zákazník 1 zakoupil, pak přinese odpovídající klíčová slova a nakonec získá všechny ostatní knihy, které mají nějaké klíčové slovo společné.
Poznámky:
-
Pokud v knihách existuje několik odpovídajících klíčových slov, dostanete v sadě výsledků duplikát. V takovém případě použijte
select distinct
-
Nepotřebujete tabulku
book
abyste dosáhli požadovaného výsledku – pokud je to z nějakého důvodu potřeba, můžete jej přinést ještě jedním připojením