|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Damien Inscription : juillet 2009 Messages : 50 ![]() |
Bonjour à tous !
Après recherche, je post ici un problème qui me reste sur les bras... En terme de "condition" dans MySQL, j'ai vu que le CASE fonctionne. Mais là, ma condition semble un peu trop complexe en l'occurence ![]() Déjà, ma requête actuelle : Code :
"topics" et "posts" sont liées par "topic_id", et "posts" et "notes" sont liées par "post_id". Jusque là, assez standard pour un forum. Le résultat de cette requête donne le nombre de résultat "positif" (note_pro, à l'inverse de note_con) pour chaque post dans un topic donné (ici le '1'). Maintenant, je soulève le problème ; la table "notes" est également reliée, nécessairement, à la table "users" par "user_id" (pour empecher double-vote). Le but : ajouter un 4e champs à mon résultat, un booléen pour être précis, du type "deja_vote", qui serait sur "true" si l'user connecté à déjà voté sur un post, ou "false" si ça n'est pas le cas. Du coup, faut qu'avant requête je récupère le user_id en session de la personne, jusque là no-soucis. Ensuite, c'est là où ça coince ; il faut que ma requête détecte, en tournant sur "notes", si à un moment le "user_id" est égal à celui que j'ai, et si à UN SEUL moment c'est le cas, passer le booléen "deja_vote" à true et le laisser tel quel. Bref, j'suis complètement paumé. Si quelqu'un a suffisement de pitié pour se défoncer le cerveau à coup d'pelle pour m'aider... J'lui en serait vraiment vraiment reconnaissant |
||
|
|
00
|
|
|
#2 | ||||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
On va commencer par réécrire ta requête de base rationnellement, càd avec un indentation, des jointures normalisées, en remplaçant la sous-requête inutile par un LEFT JOIN et en supprimant les apostrophes autour des nombres :
Code :
Code :
|
||||
|
|
10
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Damien Inscription : juillet 2009 Messages : 50 ![]() |
[big edit]
Bon, j'efface toute ma réponse et je reprends ^^ Après une ou deux modifs, voilà, ca fonctionne Code :
Encore merci, c'est parfait !!!
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com