Problème requête Mysql

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

  1. 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...
    1. 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
      1. 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 ?