PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

trouver des livres similaires en fonction des livres achetés en fonction des méta-mots-clés du livre

Vous pouvez le faire avec des jointures :

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 requête commence par les livres achetés par le client 1, puis apporte les mots-clés correspondants, et enfin obtient tous les autres livres qui ont un mot-clé en commun.

Remarques :

  • S'il existe plusieurs mots clés correspondants dans les livres, vous obtiendrez un doublon dans le jeu de résultats. Dans ce cas, utilisez select distinct

  • Vous n'avez pas besoin de table book pour obtenir le résultat souhaité - si nécessaire pour une raison quelconque, vous pouvez l'apporter avec une jointure supplémentaire