Problème requête Mysql

Fermé
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 - Modifié par gaerebut le 6/06/2011 à 10:50
 Profil bloqué - 6 juin 2011 à 11:19
Bonjour,

je commence à désespérer avec une SQL que je n'arrive pas à construire.
Voici ce que je souhaite obtenir:

Selectionner une question au hazard mais seulement si celle-ci n'à pas déjà été répondu (via l'adresse ip).

Definition de ma BDD:
Table 'Question' (id, question, date)
Table 'Reponse' (id, id_question, reponse, ip, date)

Voici ma requête pour le moment: SELECT q.id, q.question FROM question q LEFT JOIN reponse r ON r.id_question = q.id AND r.ip != "mon_ip" ORDER BY RAND() LIMIT 1

Même lorsque j'ai une réponse en BDD qui pointe sur la question avec l'id 3 (et mon ip = "::1" en local), cette requête peut quand même me sortir quand même la question à l'id 3

Quelqu'un a une idée ?!

Merci à tous

A+
Gaerebut

Configuration: Mac OS X 10.6.7 / Google Chrome 11.0.696.77

2 réponses

Pourquoi tu ne fais pas tout simplement

select question.id, reponse.id_question
from question inner join reponse on question.id=reponse.id_question
where question.id=toniddequestion

Et tu testes si c'est vide

Varaldi Q.
Laisse moi 2 minutes que j'te trouve un autre truc...
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
6 juin 2011 à 11:09
Merci pour ta réponse mais cela ne réponds pas exactement à ce que je cherche !

En effet, il peut ne pas y avoir de réponse sur la question donc je pense qu'utiliser un LEFT JOIN est utile.
De plus, la question tirée au hazard ne doit pas avoir été déjà répondu.
Donc ici on va devoir tirer une question au hazard masi avant voir si une réponse existe ET si cette réponse à une IP différente de la notre!

Le tout en une seule requête..
Je suis sûr que c'est possible U_U'

Merci quand même de ta réponse :-)

Gaerebut
0
Profil bloqué
6 juin 2011 à 11:19
Et si tu mets


select question.id, reponse.id_question
from question inner join reponse on question.id=reponse.id_question
where question.id not in reponse

ou un truc comme ça ?
0