sql >> Database >  >> RDS >> PostgreSQL

vind vergelijkbare boeken op basis van gekochte boeken op basis van meta-trefwoorden voor boeken

Je kunt dit doen met 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

De zoekopdracht begint bij boeken die klant 1 heeft gekocht, brengt vervolgens de bijbehorende zoekwoorden en krijgt uiteindelijk alle andere boeken die een willekeurig zoekwoord gemeen hebben.

Opmerkingen:

  • Als er meerdere overeenkomende zoekwoorden in boeken zijn, krijgt u duplicaat in de resultatenset. Gebruik in dat geval select distinct

  • Je hebt geen tabel book nodig om het gewenste resultaat te krijgen - als dat om de een of andere reden nodig is, kun je het met nog een keer meedoen




  1. Het laatste bericht uit de tabel vinden, gegroepeerd op gebruiker in mysql

  2. PostgreSQL-query om alle tabelnamen weer te geven?

  3. MySQL:meerdere kolommen retourneren uit een in-line subquery

  4. MySQL NULLIF() uitgelegd