PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Finden Sie ähnliche Bücher basierend auf gekauften Büchern basierend auf Buch-Meta-Schlüsselwörtern

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