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 :

Utiliser les valeurs d'une table comme champ d'une autre [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 65
    Points : 35
    Points
    35
    Par défaut Utiliser les valeurs d'une table comme champ d'une autre
    Bonjour tout le monde,

    Je souhaiterai réaliser une requête mais je ne sais même pas si c'est techniquement possible :
    - J'ai une table "Critère_Tab" qui contient, pour chaque contrat, différents critères. J'ai donc un champ "N°_Contrat" et un Champ "Nom_Critère"
    - J'ai une table "Analyse_Tab" qui contient, pour chaque contrat, une valeur accordée à chacun des critères pour chaque société qui postule. Elle donc les champs "N°_Contrat", "Nom_Critère", "Société" et "Valeur"

    Pour résumé avec exemple, ma table Critère_Tab, indique ce qui suit :
    N°_Contrat Nom_Critère
    1 Prix
    1 Valeur technique

    Ma table Analyse_Tab indique :
    N°_Contrat Société Nom_Critère Valeur
    1 Société1 Prix 40
    1 Société1 Valeur technique 60
    1 Société2 Prix 30
    1 Société2 Valeur technique 20

    Je peux bien sûr faire un formulaire au regard de cette seconde table qui me fera apparaître ce tableau. Mais ce n'est pas terrible. Je préfèrerai réussi à faire apparaître le tableau suivant :
    N°_Contrat Société Prix Valeur technique
    1 Société1 40 60
    1 Société2 30 20

    Je ne sais pas du tout faire une telle requête, ni même si c'est possible. Si quelqu'un a une idée ou même un début de piste. Je suis carrément preneur !

    Un grand merci par avance.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Bnjour

    Regarde les requetes d'analyse croisee dynamique (basée sur Analyse_Tab) .

    Je pense qu'elle devrait répondre à ton problème.

    A+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Merci. Je vais regarder ça. Mais si quelqu'un d'autre a une idée, je reste preneur.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Effectivement, ça répond tout à fait à mon problème. Pour info et pour d'autres qui seraient intéressés, voici le code SQL correspondant (généré par Access) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM First(Analyse_Tab.Valeur) AS PremierDeValeur
    SELECT Analyse_Tab.Société
    FROM Analyse_Tab
    GROUP BY Analyse_Tab.N°_Contrat, Analyse_Tab.Société
    PIVOT Analyse_Tab.Critère;
    Petite dernière question, liée à tout ça. Est-il possible d'ajouter une colonne provenant d'une autre table. J'ai une table "Note_Tab" qui comprend les mêmes champs "N°_Contrat" et "Société" que Analyse_Tab, mais elle a aussi un champ "Note" qui est lié à chacun des critères (pour le critère Prix, il y a une note, idem pour valeur technique...).
    Est-il possible d'ajouter une colonne Note pour chaque critère afin d'obtenir le tableau suivant :
    N°_Contrat Société Prix Note Valeur technique Note
    1 Société1 40 17 60 14
    1 Société2 30 15 20 7

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Je pense que le plus simple est de l'ajouter a la source de la requete croisee.

    Donc tu fais une requete qui recupere par jointure les infos dont tu as besoin et tu fais la requete croisee dynamique sur cette requete.

    Sinon un requete croisee dynamique reste une source de donnees valide, tu peux faire une jointure entre cette requete et une table ou une requete.

    Attention comme son nom l'indique la requete est dynamique donc le nombre de colonnes varie en fonction des donnees presentes. Si tu as besoin d'un nombre fixe de colonnes on peut les forcer a exister en jouant avec une des proprietes de la requte (propriete dont le nom m'echape actuellement :-( ). On y defini les entetes de colonne et Access cree la colonne meme si il n'y a pas de donnees pour celle-ci.

    A+

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Merci. Je n'ai aps tout bien compris. Mais finalement, je me suis pris autrement.

    Merci encore

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

Discussions similaires

  1. Utiliser les données d'une table comme champs d'une autre table
    Par Jalabert dans le forum Modélisation
    Réponses: 6
    Dernier message: 03/06/2010, 08h51
  2. 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
  3. Réponses: 21
    Dernier message: 23/06/2008, 18h35
  4. Réponses: 3
    Dernier message: 08/12/2007, 13h52
  5. Réponses: 12
    Dernier message: 27/08/2007, 11h34

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