Bonjour à tous,
Dans le cadre du développement d'un moteur de recherche pour un site de vidéos, j'ai besoin d'écrire une requête SQL qui me retourne les vidéos correspondantes à un/des mots clés triés par leur moyenne de votes.
Vous allez me dire d'utiliser une requête MATCH/AGAINST mais c'est ce que je fais déjà. Le seul soucis avec cette requête c'est qu'il exclut les mots-clés retournant plus de la moitié des vidéos. Dans le cas où cette 1ère requête ne retourne aucun résultat, j'aimerais donc pouvoir afficher tout de même les vidéos correspondantes.
Voilà où j'en suis :
Cependant mes vidéos ne sont pas classées correctement. A mon avis je n'utilise pas correctement LEFT JOIN...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT vid_id FROM video AS v LEFT JOIN ratings AS r ON v.vid_id=r.id WHERE (vid_title LIKE "%toto%" OR vid_tags LIKE "%toto%") AND r.id IS NULL ORDER BY r.total_value/r.total_votes DESC, v.vid_date DESC
Informations :
- Pas toutes les vidéos ne possèdent un enregistrement correspondant dans la table "ratings" (vidéos n'ayant pas encore reçues de votes).
- Le but est d'afficher en priorité les vidéos notées (par ordre décroissant), puis par date d'ajout (des plus récentes aux plus anciennes).
J'espère que ce n'est pas trop confus.
Merci par avance pour votre aide !
Partager