Sie können dies mit Joins tun:
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
Die Abfrage beginnt mit Büchern, die Kunde 1 gekauft hat, bringt dann die entsprechenden Schlüsselwörter und ruft schließlich alle anderen Bücher ab, die ein gemeinsames Schlüsselwort haben.
Hinweise:
-
Wenn mehrere übereinstimmende Schlüsselwörter für mehrere Bücher vorhanden sind, werden Sie in der Ergebnismenge doppelt angezeigt. Verwenden Sie in diesem Fall
select distinct
-
Sie brauchen kein Tisch-
book
um das gewünschte Ergebnis zu erhalten - wenn es aus irgendeinem Grund erforderlich ist, können Sie es mit einem weiteren Join bringen