sql >> Databasteknik >  >> RDS >> PostgreSQL

hitta liknande böcker baserade på köpta böcker baserade på bokmeta-sökord

Du kan göra detta 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

Frågan startar från böcker som kund 1 köpte, ta sedan med motsvarande sökord och får slutligen alla andra böcker som har något gemensamt sökord.

Anmärkningar:

  • Om det finns flera matchande sökord i böckerna får du dubbletter i resultatuppsättningen. Använd i så fall select distinct

  • Du behöver inte tabell book för att få det resultat du vill ha - om det behövs av någon anledning kan du ta med det med ytterligare en join




  1. Hur skapar man ett id (autoincremented) i Mysql med en sträng sammanlänkad med den? använder endast php

  2. Hur man väljer det senaste rekordet för varje timme på en dag

  3. LIKE-frågan sql fungerar inte i sammanlänkade värden med mellanslag

  4. MySQL räknar unika och dubbletter av värden