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 :

de champs c1, c2, c3… vers champ générique c [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut de champs c1, c2, c3… vers champ générique c
    Bonjour,

    J'ai un ensemble de tables de propriétés (P), de lieux (L), et de dates (D), choisis chacun dans P1…P20, L1…L30, D1…D10 :

    Table «D1»
    Lieu P1 P2 P3 … P20
    L1 valeur pour chaque propriété…
    L2 valeur pour chaque propriété…

    idem pour les tables D2 à D10

    Je voudrais regrouper tout cela en une table unique :
    Lieu Date Prop Valeur
    L1 D1 P1 valeur
    … … … …
    L30 D10 P20 valeur

    Ceci afin de pouvoir, avec les bonnes requêtes, sortir des feuilles et graphiques :
    —pour un lieu donné
    —pour une date donnée
    —pour une propriété donnée.

    J'ai cherché, mais débutant, je ne vois pas de solution. Et vous ?

    Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    Salut,

    Je ne suis pas sûr de comprendre :

    veux-tu faire un transfert de tes données, par exemple, d'une table T1 de champs c1,c2,c3,c4:

    c1-----c2-----c3----c4
    A ----- B ---- C ---- D

    vers une table T2 de champ c

    c
    A
    B
    C
    D

    =============================

    Ou bien souhaites-tu utiliser une requête ?

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci de cette demande de précision.
    Ce n'est pas la première solution; j'aurais plutôt vu une requête.

    Pour présenter le problème autrement, les valeurs sont fonctions de trois dimensions : valeur = fonction (Date D, Lieu L, Propriété P)
    et je voudrais une table finale :
    valeur date lieu propriété
    99 2010 Ici P1
    31 2009 Ailleurs P3
    (et toutes les combinaisons de date/lieu/propriété possibles)

    le drame est qu'on m'a fourni tout un ensemble de tables :
    — la date est dans le nom de la table (table «2010» par exemple)
    — dans chaque table, il y a un champ par valeur possible de propriété : un champ «valeur quand P1», «valeur quand P2», …
    — le lieu est normal, il est donné dans un champ «lieu»

    J'espère que je suis plus clair.

    Cordialement,

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    Salut,

    Personnellement je préfère la méthode de transfert utilisant du code VBA.

    Sinon, je te propose une solution parmi d'autres "type requêtes":

    Tout d'abord mon exemple n'utilise, pour simplifier, que 5 année (j'utilise le mot année au lieu du mot date) et donc 5 tables (nommées "2006",2007","2008","2009","2010") et 5 champs propriétés (P1,P2...P5) par table.
    A toi d'adapter cela à ton cas (20 propriétés):

    Tout d'abord tu crées une table IndiceProprietes (de champ IndiceP) contenant les indices de 1 à 5:

    IndiceProprietes:
    ----------------
    IndiceP
    1
    2
    ...
    5

    ==================================================

    Puis tu crées une requête union, nommée "ReqAnnees", entre les 5 tables "2006"..."2010"

    Voici son sql:
    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
    Select *, 2006 as Annee
    From [2006]
    Union
    Select *, 2007 as Annee
    From [2007]
    Union
    Select *, 2008 as Annee
    From [2008]
    Union
    Select *, 2009 as Annee
    From [2009]
    Union 
    Select *, 2010 as Annee
    From [2010];

    et enfin la requête finale basée sur la table IndiceProprietes et la requête union ReqAnnees, utilisant la fonction choose (voir l'aide touche F1) et dont voici le sql :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ReqAnnees.Annee, ReqAnnees.Lieu, Choose(IndiceProprietes.IndiceP,"P1","P2","P3","P4","P5") AS Propriété, Choose(IndiceProprietes.IndiceP,ReqAnnees.P1,ReqAnnees.P2,ReqAnnees.P3,ReqAnnees.P4,ReqAnnees.P5) AS Valeur
    FROM ReqAnnees, IndiceProprietes;

    A toi d'adapter tout cela...

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup !

    Après adaptation, cela marche parfaitement (j'ai seulement dû mettre les noms de table entre guillemets).

    Il me reste maintenant à comprendre en détail la procédure employée.

    Très cordialement,

    PS: pour le VBA, je suis bien d'accord. Mais comme je devrai laisser la maintenance à des personnes pas forcément très au fait, je préfère ne pas les effrayer.

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

Discussions similaires

  1. Copier champ d'une table vers champ d'une autre table
    Par kepherton dans le forum Débuter
    Réponses: 1
    Dernier message: 10/10/2008, 14h42
  2. Réponses: 5
    Dernier message: 20/11/2006, 17h45
  3. [MySQL] Copier 1 champ d'1 table vers une autre.
    Par cisse18 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/04/2006, 09h50
  4. Réponses: 12
    Dernier message: 22/02/2006, 22h19
  5. Liste modifiable vers champ texte ou mémo
    Par Michel DEMANET dans le forum Access
    Réponses: 14
    Dernier message: 21/01/2006, 09h25

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