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

find lignende bøger baseret på købte bøger baseret på bogens meta søgeord

Du kan gøre dette med joins:

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

Forespørgslen starter fra bøger, som kunde 1 har købt, medbring derefter de tilsvarende søgeord, og til sidst får du alle andre bøger, der har et søgeord til fælles.

Bemærkninger:

  • Hvis der er flere matchende søgeord på tværs af bøger, vil du få duplikat i resultatsættet. I så fald skal du bruge select distinct

  • Du behøver ikke tabellen book for at få det resultat, du ønsker - hvis det af en eller anden grund er nødvendigt, kan du medbringe det med et join mere




  1. Hvordan virker contains() i PL-SQL?

  2. nulstil root-adgangskoden med forkert mysql-konfiguration

  3. Dvale opdaterer en til mange i kaskade

  4. Udførelse af en lagret procedure med markør i PHP