Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2011, 12h29   #1
Membre habitué
 
Inscription : août 2005
Messages : 365
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : août 2005
Messages : 365
Points : 105
Points : 105
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 :
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.
docjo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 17h28   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
Bonjour,
il s’agit de remettre les champs libre1,libre2,… en lignes si j’ai bien compris.
Code sql :
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.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 22h31   #3
Membre habitué
 
Inscription : août 2005
Messages : 365
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : août 2005
Messages : 365
Points : 105
Points : 105
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 ?
docjo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 11h21   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
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 :
FROM T_Examens T1
Code sql :
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.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 02h39   #5
Membre habitué
 
Inscription : août 2005
Messages : 365
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Secteur : Santé

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

Code :
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
docjo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 11h40   #6
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
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 :
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
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 12h48   #7
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
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 :
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;
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 17h01   #8
Membre habitué
 
Inscription : août 2005
Messages : 365
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : août 2005
Messages : 365
Points : 105
Points : 105
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 :
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
docjo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h31.


 
 
 
 
Partenaires

Hébergement Web