PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

trova libri simili in base ai libri acquistati in base alle meta parole chiave del libro

Puoi farlo con i join:

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

La query parte dai libri che il cliente 1 ha acquistato, quindi porta le parole chiave corrispondenti e infine ottiene tutti gli altri libri che hanno una parola chiave in comune.

Note:

  • Se ci sono più parole chiave corrispondenti nei libri, otterrai un duplicato nel set di risultati. In tal caso usa select distinct

  • Non hai bisogno della tabella book per ottenere il risultato che desideri - se necessario per qualche motivo, puoi portarlo con un altro join