MySQL: Initialiser une variable pour un trie
Résolu/Fermé
Clems974
Messages postés
2
Statut
Membre
-
Clems974 Messages postés 2 Statut Membre -
Clems974 Messages postés 2 Statut Membre -
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
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:
- MySQL: Initialiser une variable pour un trie
- Mysql community download - Télécharger - Bases de données
- Mysql key mul ✓ - Forum Bases de données
- Access vs mysql - Forum Webmastering
- Hébergement php mysql ✓ - Forum PHP
- A link to the sql server could not be established. please check your configuration. le serveur mysql est inaccessible. vérifiez votre configuration. ✓ - Forum MySQL
1 réponse
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..)
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