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 server - Télécharger - Bases de données
- Could not connect to mysql! please check your database settings! - Forum Redhat
- Mysql error 1 ✓ - Forum Réseaux sociaux
- Access vs mysql - Forum Webmastering
- Phpmyadmin a tenté de se connecter au serveur mysql, et le serveur a rejeté la connexion. merci de vérifier les valeurs de host, username et password dans la configuration et de s'assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur mysql. ✓ - Forum PHP
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