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 requête SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Problème avec requête SQL
    Bonjour,

    J'utilise présentement Access 2003 pour stocker les données d'un questionnaire. Le questionnaire contient plus d'une centaine de questions (réponse OUI / NON).

    Je fais une requête SQL pour obtenir seulement les questions qui ont été répondues par OUI (1). J'utilise le OR. Voici la structure utilisée pour mon where :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WHERE (((TBL_AUDIT_ARTICLE9.[9_1_1])=1))
       OR (((TBL_AUDIT_ARTICLE9.[9_1_2])=1))
       OR (((TBL_AUDIT_ARTICLE9.[9_2_1])=1))
       OR (((TBL_AUDIT_ARTICLE9.[9_2_2])=1))
       OR (((TBL_AUDIT_ARTICLE9.[9_2_3])=1))
       OR (((TBL_AUDIT_ARTICLE9.CR9_1_1)=1))
       OR (((TBL_AUDIT_ARTICLE9.CR9_1_2)=1))
       OR (((TBL_AUDIT_ARTICLE9.CR9_2_1)=1))
       OR (((TBL_AUDIT_ARTICLE9.CR9_2_2)=1))
       OR (((TBL_AUDIT_ARTICLE9.CR9_2_3)=1));
    Ça fonctionne, mais comme j'ai plus d'une centaine de questions... je me demandais s'il y avait pas un moyen d'effectuer le même travail, mais en plus simple. L'idée est de simplement éliminer les enregistrements qui n'ont pas de réponse positive (OUI).

    Merci!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    On peut raccourcir la syntaxe avec un IN (limité en nombre d'arguments, je ne connais pas celle-ci sur Access 2003) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE 1 in ([9_1_1], [9_1_2], [9_2_1], [9_2_2], [9_2_3], ...)

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour la réponse. Par contre, je ne pourrai l'essayer avant lundi prochain. Je donne un retour le plus rapidement possible. Si quelqu'un peut le confirmer avant, c'est tant mieux.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il y a surtout un gros problème de conception !
    Tu ne devrais pas avoir une question par colonne dans une seule table mais une table de questions et une table de réponses. Ta requête serait alors beaucoup plus simple et ta BDD réutilisable quel que soit le nombre de questions.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    En partant du model Waldar, si tu as un problème avec le nombre d'arguments acceptés, et si la colonne ne contient pas de NULL et si NON vaut 0...
    (Ca fait beaucoup de si )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE [9_1_1]+[9_1_2]+[9_2_1]+[9_2_2]+[9_2_3]+... >= 1

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci CinePhil. Je vais plutôt créer une table pour récupérer les réponses. Par contre, il ne s'agit pas d'un questionnaire où l'utilisateur clique sur un bouton 'envoyer' et puis voilà. Il s'agit plutôt d'un questionnaire de travail pour une évaluation. On peut y retourner comme on veut.

    Donc, je pourrais créer une table REPONSE et forcer l'utilisateur à cliquer sur un bouton 'envoyer' lorsqu'il veut obtenir les réponses positives. Toutefois, cette table devra être vidée et remplie de nouveau à chaque clic.

    Est-ce que cela se tient?

    Par curiosité, je vais également tester ton idée pacmann.

    Merci!

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par bubblesort Voir le message
    Merci CinePhil. Je vais plutôt créer une table pour récupérer les réponses.
    Sage résolution mais réfléchis quand même bien à la structure de la BDD, surtout quand je lis la suite de ta réponse :
    Par contre, il ne s'agit pas d'un questionnaire où l'utilisateur clique sur un bouton 'envoyer' et puis voilà. Il s'agit plutôt d'un questionnaire de travail pour une évaluation. On peut y retourner comme on veut.
    Soit, c'est faisable !
    Il faut donc enregistrer les réponse de l'utilisateur au questionnaire au fur et à mesure qu'il les saisit et lui donner un code pour qu'il puisse revenir sur son questionnaire et le compléter.

    Donc, je pourrais créer une table REPONSE et forcer l'utilisateur à cliquer sur un bouton 'envoyer' lorsqu'il veut obtenir les réponses positives. Toutefois, cette table devra être vidée et remplie de nouveau à chaque clic.

    Est-ce que cela se tient?
    Euh... moi pas comprendre ! Si tu vides la table, tu perds la saisie de l'utilisateur.
    J'ai l'impression que tu te mélanges le cerveau entre les données (aspect statique) et le processus de réponse au questionnaire (aspect dynamique).

    Commence par réfléchir au côté statique avant de passer au côté dynamique.
    Tu peux aller voir dans le forum Schéma, il y a déjà eu des discussion relatives à la modélisation de BDD de questionnaires. Utilise l'outil de recherche du forum.

    Et pose toi les bonnes questions !
    - N'y a t-il qu'un seul questionnaire ou peut-il y en avoir plusieurs différents ?
    - Les questions sont-elles toutes à réponse oui/non ou y a t-il des liste de choix de réponses ou encore des réponses textuelles libres ?

    As-tu regardé les outils existants pour faire des questionnaires en ligne ? Si ce n'est pas trop tard, regarde du côté de Lime Survey qui est assez simple à prendre en main et assez puissant.

    Bon courage !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour ton aide CinePhil.

    Je vais regarder dans le forum. J'ai des contraintes dans ce projet... à commencer par Access! Je dois travailler avec les formulaires et non des pages ASP (par exemple).

    Il faut oublier mon histoire de supprimer les données de la table et de la reconstruire par la suite. J'ai eu une bulle!

    Comme j'ai plus de 100 questions, je dois travailler avec plusieurs formulaires que l'utilisateur parcours par un système de navigation. Je pourrais m'organiser pour envoyer les données de chaque formulaire vers la table REPONSE en question lors de la fermeture du formulaire.

    Merci encore!

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Comme j'ai plus de 100 questions, je dois travailler avec plusieurs formulaires que l'utilisateur parcours par un système de navigation. Je pourrais m'organiser pour envoyer les données de chaque formulaire vers la table REPONSE en question lors de la fermeture du formulaire.
    Une question n'appartient-elle qu'à un seul questionnaire ou peut-elle appartenir à plusieurs ?

    Tu peux afficher toutes les questions d'un formulaire à l'aide d'un seul formulaire mais en mode question par question et non pas en tableau.

    Mais là on est vraiment sortis du cadre de ce forum consacré au langage SQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Effectivement, on sort du cadre! héhé

    Une question peut appartenir à plusieurs questionnaires. Je ne suis pas sûr que le mode question par question pourrait fonctionner. Certaines questions doivent être désactivées en fonction des réponses de l'utilisateur.

    Par exemple, la section 2_2 (ex.: 5 questions) est désactivée si l'utlisateur répond non dans la section 2_1 (ex.: 4 questions), etc.

    Je retourne lundi au boulot pour continuer!

    Je donnerai des nouvelles.

  11. #11
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Malgré que la structure de la base pourrait être modifiée, je voulais simplement informer que la requête fonctionne avec le code suivant (sous Access 2003).

    WHERE 1 IN ([9_1_1], [9_1_2], [9_2_1], [9_2_2], [9_2_3], ...)

    Merci!

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

Discussions similaires

  1. [SQL] Problème avec requête SQL
    Par Kenya dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/01/2008, 22h13
  2. Problème avec requête SQL dans VBA
    Par Mimisio dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/07/2007, 11h00
  3. [SQL] problème avec requête sql
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/05/2007, 11h58
  4. probléme avec requête SQL
    Par richard60 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/03/2007, 18h18
  5. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41

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