MySQL: Initialiser une variable pour un trie

Résolu/Fermé
Clems974 Messages postés 2 Date d'inscription mardi 13 novembre 2012 Statut Membre Dernière intervention 15 juillet 2015 - 13 nov. 2012 à 12:18
Clems974 Messages postés 2 Date d'inscription mardi 13 novembre 2012 Statut Membre Dernière intervention 15 juillet 2015 - 13 nov. 2012 à 12:37
Bonjour,

Voila, j'essaye de trouver une solution à mon script sans succès. Peut être que vous pourriez m'aider!

Alors je possède 2 tables: commentaires et commentaires_vote. commentaires sert à indexer les commentaires postés sur mon site, commentaires_vote sert comptabiliser les +1 et -1 des visiteurs.

Du coup, pour un trie en fonction des commentaires les plus populaires, je dois faire une somme du résultat enregistré dans commentaires_vote, puis l'utiliser pour faire le trie dans commentaires. Cependant, tous les commentaires ne possèdent pas forcément un vote ce qui fait que la valeur retournée est nul. La je bloque car il faut que j'obtienne un 0. Avez vous une idée pour résoudre ce problème? Peut être une commande permettant d'initialiser la variable quand aucune valeur n'est retourné.

Pour information, voici mon script:
SELECT *, ((SELECT (SUM(vote)-(COUNT(vote)-SUM(vote))) FROM commentaires_vote WHERE idn_vote=A.idn GROUP BY idn_vote)) AS res_sum
FROM commentaires A
WHERE idp='<IDP>' AND A.active>0
ORDER BY res_sum DESC, A.date DESC


A voir également:

1 réponse

Clems974 Messages postés 2 Date d'inscription mardi 13 novembre 2012 Statut Membre Dernière intervention 15 juillet 2015
13 nov. 2012 à 12:37
Finalement, après d'autres recherches, j'ai pu trouver une solution.

J'ai trouver la fonction COALESCE qui me permet de faire ce que je veux (http://dev.mysql.com/doc/refman/5.0/fr/comparison-operators.html?iframe=true&width=100%&he..)

SELECT *,  COALESCE((SELECT (SUM(vote)-(COUNT(vote)-SUM(vote))) FROM commentaires_vote WHERE idn_vote=A.idn GROUP BY idn_vote),0) AS res_sum
FROM commentaires A
WHERE idp='<IDP>' AND A.active>0
ORDER BY res_sum DESC, A.date DESC 
0