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

Requêtes et SQL. Discussion :

Liste déroulante basée sur plusieurs champs d'une table [AC-97]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut Liste déroulante basée sur plusieurs champs d'une table
    Bonjour

    Je souhaite faire une liste déroulante qui me propose les valeurs des 6 champs Libre1, libre2,...,Libre6 d'une table. J'aimerai éviter de passer par une table intermédiaire.
    On ne peut faire une requete union dans les sous requêtes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT (SELECT T_examens.Libre1 FROM T_examens UNION SELECT T_examens.Libre2 FROM T_examens UNION SELECT T_examens.Libre3 FROM T_examens UNION SELECT T_examens.Libre4 FROM T_examens UNION SELECT T_examens.Libre5 FROM T_examens UNION SELECT T_examens.Libre6 FROM T_examens) AS Monchamp
    FROM T_examens
    GROUP BY Monchamp
    HAVING (((Monchamp) Is Not Null))
    ORDER BY Monchamp;
    Je vous remercie d'avance pour vos propositions.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 526
    Points
    57 526
    Billets dans le blog
    42
    Par défaut
    Bonjour,
    il s’agit de remettre les champs libre1,libre2,… en lignes si j’ai bien compris.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT T.Monchamp FROM
    (
      (SELECT T1.Libre1 as Monchamp FROM T_Examens T1)
      UNION
      (SELECT T2.Libre2 FROM T_Examens T2)
      UNION
      (SELECT T3.Libre3 FROM T_Examens T3)
      UNION
      (SELECT T4.Libre4 FROM T_Examens T4)
      UNION
      (SELECT T5.Libre5 FROM T_Examens T5)
      UNION
      (SELECT T6.Libre6 FROM T_Examens T6)
    ) as T
    ORDER BY T.Monchamp

    Normalement, UNION supprime les doublons ce qui rend le GROUP BY inutile. Je n’ai pas testé le comportement avec Null, il faudra peut-être rajouter un WHERE T.Monchamp is not null.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    Il s'agit en effet d'avoir dans une seule liste déroulante les valeurs de 6 champs d'une même table. Il me semble que le code fait appel à des champs de tables différentes, non ?

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 526
    Points
    57 526
    Billets dans le blog
    42
    Par défaut
    Citation Envoyé par docjo
    Il me semble que le code fait appel à des champs de tables différentes, non ?
    Je ne vois pas bien la question…

    Sinon que T1, T2, …, T6 sont des alias, c.a.d des noms personnalisés mais qui pointent tous vers la table T_Examens :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM T_Examens T1
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM T_Examens T2
    Etc…

    Ces alias ne sont peut-être pas nécessaires dans ce contexte (je n’ai pas testé) mais parfois indispensables lorsque la requête utilise plusieurs fois la même table.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    Oui, je comprends le principe.
    Mais à l'éxécution j'ai une erreur: "Syntax error in from clause" avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Monchamp FROM ((SELECT T1.Libre1 FROM T_Examens T1 ) UNION (SELECT T2.Libre2 FROM T_Examens T2) UNION (SELECT T3.Libre3 FROM T_Examens T3) UNION (SELECT T4.Libre4 FROM T_Examens T4) UNION (SELECT T5.Libre5 FROM T_Examens T5) UNION (SELECT T6.Libre6 FROM T_Examens T6))  AS T ORDER BY T.Monchamp;
    Il surligne le premier select de la premiere sous requete T1

    Bonnes année à tous et merci pour tous vos bons conseils

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 526
    Points
    57 526
    Billets dans le blog
    42
    Par défaut
    bonjour,

    il faut déjà définir l'alias Monchamp dans le 1er SELECT de la sous-requête UNION:

    Citation Envoyé par docjo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Monchamp FROM ((SELECT T1.Libre1 as Monchamp FROM T_Examens T1 ) UNION (SELECT T2.Libre2 FROM T_Examens T2) UNION (SELECT T3.Libre3 FROM T_Examens T3) UNION (SELECT T4.Libre4 FROM T_Examens T4) UNION (SELECT T5.Libre5 FROM T_Examens T5) UNION (SELECT T6.Libre6 FROM T_Examens T6))  AS T ORDER BY T.Monchamp;
    bonne année 2012

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 526
    Points
    57 526
    Billets dans le blog
    42
    Par défaut
    bon, même en 2012, Access aura toujours sa part de mystère dans la syntaxe.

    Il semble que cette fois la syntaxe fonctionne:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT Monchamp FROM
      (SELECT Libre1 AS Monchamp FROM T_Examens)
      UNION
      (SELECT Libre2 FROM T_Examens)
      UNION
      (SELECT Libre3 FROM T_Examens)
      UNION
      (SELECT Libre4 FROM T_Examens)
      UNION
      (SELECT Libre5 FROM T_Examens)
      UNION
      (SELECT Libre6 FROM T_Examens)
    ORDER BY Monchamp;

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    J'ai essayé une bonne dizaine de code mais toujours l'erreur: "Syntax error in from clause".
    Je suis tombé sur ce code qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT Libre1 AS Monchamp FROM T_Examens
    UNION
    (SELECT Libre2 FROM T_Examens) 
    UNION
    (SELECT Libre3 FROM T_Examens)
    UNION
    (SELECT Libre4 FROM T_Examens)
    UNION
    (SELECT Libre5 FROM T_Examens)
    UNION
    (SELECT Libre6 FROM T_Examens)  ORDER BY Monchamp;
    Merci pour votre aide

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

Discussions similaires

  1. liste déroulante alimente par les champs d'une table sql
    Par gribouille343 dans le forum Langage
    Réponses: 6
    Dernier message: 04/01/2011, 16h44
  2. [MySQL] PHP Liste déroulante qui récupère les champs d'une table
    Par Cathe89 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2010, 11h55
  3. trigger sur plusieurs champs d'une table
    Par PxPar dans le forum PL/SQL
    Réponses: 1
    Dernier message: 27/08/2009, 15h31
  4. [HTML] mettre un DIV sur plusieurs champs d'une table
    Par Nixar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2007, 15h13
  5. Réponses: 1
    Dernier message: 09/04/2007, 16h56

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