IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problème avec requete SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Par défaut Problème avec requete SQL
    Bonjour à tous

    J'ai un petit problème avec une fonctionnalité que j'essai de faire en SQL. Pour un formulaire de consultation en ligne, j'aimerais donné la possibilité à des usagers de faire une recherche parmi les réponses des autres utilisateurs.

    Pour ce faire j'ai la table:

    Réponse: ReponseID, QuestionID, RepondantID, Reponse

    J'aimerais pouvoir faire une requete du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select * 
    From Réponse
    Where ((QuestionID = 17 and Reponse = 'Reponse a la Q17') AND
               (QuestionID = 18 and Reponse = 'Reponse a la Q18'))
    Malheureusement, ce genre de requête ne fonctionne pas

    Est-ce que quelqu'un à déja eu ce problème et de quel façon le contourner!

    Merci d'avance,

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Par défaut
    Peut être pas la meilleure réponse, mais avec une sous-requête ça ne marche pas ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Par défaut
    J'y ai pensé, mais je ne suis pas sur du comment la développer. Si tu as une petite idée la dessus ce serait apprécier

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Par défaut
    Bonjour,
    premièrement si je peux me permettre, le fait d'appeler une table "Réponse" qui contient un champ qui s'appelle "Reponse" n'est pas très judicieux!
    Deuxièmement lorsque vous dites
    Malheureusement, ce genre de requête ne fonctionne pas
    expliquez un peu plus !!
    Enfin, je pense que la solution est effectivement une sous-requête en utilisant le IN.

    En espérant avoir aidé!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Par défaut
    Citation Envoyé par baly5 Voir le message
    Bonjour,
    premièrement si je peux me permettre, le fait d'appeler une table "Réponse" qui contient un champ qui s'appelle "Reponse" n'est pas très judicieux!
    Oops j'avoue!!! je viens de constater l'erreur de jugement

    Citation Envoyé par baly5 Voir le message
    Deuxièmement lorsque vous dites expliquez un peu plus !!
    Enfin, je pense que la solution est effectivement une sous-requête en utilisant le IN.
    En espérant avoir aidé!
    Quand je dis ça ne marche pas j'entends
    "The Query Returned 0 Result"


    Pour la requête avec le IN ça ressemblerait à quoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select * From Reponses 
    Where ReponseID in (Select ReponseID From Reponses Where ???? = ????)
    Je suis probablement pas dans la bonne direction pour le IN car je me retrouverais avec la meme requête dans la sous-requete -_-'

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Par défaut
    Comme suit conviendrai, mais vitre très très lourd si 20 questions et 20 tests !!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM (SELECT * FROM Reponse WHERE QuestionID = 18 AND Reponse = 'Reponse a la Q18')
    WHERE QuestionID = 17 AND Reponse = 'Reponse a la Q17'
    L'ajout d'un AS serait également pas mal, en plus du changement pour éviter le doublon BASE, CHAMP

  7. #7
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Par défaut
    Je pense que ça ressemblerait plus à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM Réponse
    WHERE QuestionID = 17 
    AND Reponse = 'Reponse a la Q17'
    AND ReponseID IN (SELECT ReponseID FROM Reponses WHERE QuestionID = 18 AND Reponse = 'Reponse a la Q18')
    A tester ...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Par défaut
    Citation Envoyé par baly5 Voir le message
    Je pense que ça ressemblerait plus à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM Réponse
    WHERE QuestionID = 17 
    AND Reponse = 'Reponse a la Q17'
    AND ReponseID IN (SELECT ReponseID FROM Reponses WHERE QuestionID = 18 AND Reponse = 'Reponse a la Q18')
    A tester ...
    Sans succès, retourne 0 record

    Ce problème s'en vient vachement lourd O_O

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Il est en effet difficile de trouver une quelconque ligne de la table Reponse dans laquelle la colonne QuestionID contienne simultanément les valeurs 17 et 18.
    Peut-être que OR résoudrait partiellement ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select * 
    From Réponse
    Where ((QuestionID = 17 and Reponse = 'Reponse a la Q17') 
    OR       (QuestionID = 18 and Reponse = 'Reponse a la Q18'))
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Il est en effet difficile de trouver une quelconque ligne de la table Reponse dans laquelle la colonne QuestionID contienne simultanément les valeurs 17 et 18.
    Peut-être que OR résoudrait partiellement ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select * 
    From Réponse
    Where ((QuestionID = 17 and Reponse = 'Reponse a la Q17') 
    OR       (QuestionID = 18 and Reponse = 'Reponse a la Q18'))
    Ça je sais!

    Mais il faut vraiment que ce soit un and

    Car je veux trouver ceux qui ont la réponse X pour la question 17 ET la réponse Y pour la question 18

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probléme avec requete SQL
    Par sfrsky dans le forum Débuter
    Réponses: 4
    Dernier message: 17/05/2009, 12h27
  2. Problème avec requetes sql UPDATE
    Par moilou2 dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 08/07/2008, 15h42
  3. Problème avec requete SQL/type NumAuto
    Par Mimisio dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/07/2007, 11h56
  4. [ACCESS][SQL] Problème avec requete SQL ...
    Par mpascolo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/11/2005, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo