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 :
Celle-ci pioche dans 3 tables : "topics", "posts", "notes".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT P.post_id, T.topic_id, (SELECT COUNT(note_pro) FROM notes WHERE note_pro = '1' AND post_id = P.post_id) AS NbPro FROM topics T, posts P WHERE T.topic_id = P.topic_id AND T.topic_id = '1';
"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
Partager