PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

encontre livros semelhantes com base em livros comprados com base em meta palavras-chave de livros


Você pode fazer isso com junções:
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

A consulta começa nos livros que o cliente 1 comprou, depois traz as palavras-chave correspondentes e, finalmente, obtém todos os outros livros que têm qualquer palavra-chave em comum.

Notas:

  • Se houver várias palavras-chave correspondentes nos livros, você obterá uma duplicata no conjunto de resultados. Nesse caso, use select distinct

  • Você não precisa da tabela book para obter o resultado desejado - se necessário por algum motivo, você pode trazê-lo com mais uma junção