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

comment obtenir des objets similaires basés sur des balises

Cela renverra une liste de tous les films qui partagent au moins 1 tag avec le <current_movie_id> donné classés par nombre décroissant de balises en commun

SELECT movie.*, count(DISTINCT similar.tag) as shared_tags FROM movie INNER JOIN 
    ( tagged AS this_movie INNER JOIN tagged AS similar USING (tag) )
    ON similar.movie = movie.id
WHERE this_movie.movie=<current_movie_id>
AND   movie.id != this_movie.movie
GROUP BY movie.id
ORDER BY shared_tags DESC

j'espère que cela vous donne quelque chose avec quoi travailler