[SQL] Problème de requête
Résolu
modjodandy
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
modjodandy Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
modjodandy Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une table qui se présente de cette façon :
nom de la table : wp_votes
post correspondant à l'ID d'un message
votes correspondant à l'ID des utilisateurs qui ont votés pour le message
Or, le score des messages n'est pas sauvegardé dans la base de donnée, et j'aimerai trouver un moyen pour comptabiliser le nombres de virgules dans la colonne "votes" afin d'ordonner ma requête et d'avoir le résultat suivant :
ID su message : 11 Score : 6
Id du message : 10 Score : 4
Merci de votre aide! C'est assez urgent ;)
J'ai une table qui se présente de cette façon :
nom de la table : wp_votes
ID post votes ------------------------------------------------ 1 10 ,2,3,4,5 2 11 ,2,3,4,5,6,7
post correspondant à l'ID d'un message
votes correspondant à l'ID des utilisateurs qui ont votés pour le message
Or, le score des messages n'est pas sauvegardé dans la base de donnée, et j'aimerai trouver un moyen pour comptabiliser le nombres de virgules dans la colonne "votes" afin d'ordonner ma requête et d'avoir le résultat suivant :
ID su message : 11 Score : 6
Id du message : 10 Score : 4
Merci de votre aide! C'est assez urgent ;)
A voir également:
- [SQL] Problème de requête
- Logiciel sql - Télécharger - Bases de données
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Sql lister les tables ✓ - Forum Programmation
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
4 réponses
c'est sous quel SGBD?
c'est pour utiliser dans un programme, derrière, ou juste pour faire de l'affichage (genre PHP/MySQL)?
si tu as un moteur PL/SQL, ça pourrait résoudre ton problème.
c'est pour utiliser dans un programme, derrière, ou juste pour faire de l'affichage (genre PHP/MySQL)?
si tu as un moteur PL/SQL, ça pourrait résoudre ton problème.
Si ton champs votes est de type chaine de caractères tu peux faire :
SELECT LENGTH(votes)/2 FROM TA_TABLE
Tu peux utiliser la fonction CEILING (arrondi par excès), FLOOR (arrondi par défaut) avec MySQL :
SELECT CEILING(LENGTH(votes)/2) FROM TA_TABLE
Bonjour!
Je sais pas si ça va te servir (car tu es en passe de trouver une solution à ton problème), mais j'ai lu quelque part que dans une bdd c'était "pas le top" d'avoir plusieurs valeurs dans un même champ. (voir la discussion ici)
Je sais pas ce que ça vaut, mais il semblerait que ce soit mieux d'avoir une "table de liaison" du style:
En fait tu es le dans le cas où tu as une "cardinalité n-n" car :
- chaque utilisateur peut voter pour plusieurs messages
- et chaque message peut être choisi par plusieurs utilisateurs
Et en cas de cardinalité n-n parait-il qu'une table de liaison fait bien l'affaire!
Du coup, après il te suffit de compter le nombre de fois où le message apparait dans la base pour avoir le score du message, et si un jour tu veux faire la liste des messages pour lesquels un même utilisateur à voté ce sera facile!
En espérant que ça soit utile
;)
Je sais pas si ça va te servir (car tu es en passe de trouver une solution à ton problème), mais j'ai lu quelque part que dans une bdd c'était "pas le top" d'avoir plusieurs valeurs dans un même champ. (voir la discussion ici)
Je sais pas ce que ça vaut, mais il semblerait que ce soit mieux d'avoir une "table de liaison" du style:
id post utilisateur ayant voté pour ce post ------------------------------------------------------------------------------------ 1 10 2 2 10 3 3 11 2
En fait tu es le dans le cas où tu as une "cardinalité n-n" car :
- chaque utilisateur peut voter pour plusieurs messages
- et chaque message peut être choisi par plusieurs utilisateurs
Et en cas de cardinalité n-n parait-il qu'une table de liaison fait bien l'affaire!
Du coup, après il te suffit de compter le nombre de fois où le message apparait dans la base pour avoir le score du message, et si un jour tu veux faire la liste des messages pour lesquels un même utilisateur à voté ce sera facile!
En espérant que ça soit utile
;)
merci à toi!