sql >> Base de Datos >  >> RDS >> PostgreSQL

encontrar libros similares basados ​​en libros comprados basados ​​en metapalabras clave de libros

Puedes hacer esto con uniones:

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 consulta comienza con los libros que compró el cliente 1, luego trae las palabras clave correspondientes y, finalmente, obtiene todos los demás libros que tienen alguna palabra clave en común.

Notas:

  • Si hay varias palabras clave coincidentes en los libros, obtendrá un duplicado en el conjunto de resultados. En ese caso, use select distinct

  • No necesitas tabla book para obtener el resultado que desea; si es necesario por alguna razón, puede traerlo con una combinación más