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 :

Problème avec l'analyse croisée [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut Problème avec l'analyse croisée
    Bonjour,

    J'ai un problème dans la generation d'une tableau croisé. Le problème est que je doit génerer un tableau où on peut voir le montant versé par periode, mais le tableau me genere des columnes qui son pas dans le tableau de periode que j'avait crée. Le code est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(TAB_PREPARATION_DONNEES.mont_vers) AS SommeDemont_vers
    SELECT TAB_PREPARATION_DONNEES.ID_PROJET, TAB_PREPARATION_DONNEES.groupe_projet, TAB_PREPARATION_DONNEES.mont_accorde
    FROM TAB_PREPARATION_DONNEES
    GROUP BY TAB_PREPARATION_DONNEES.ID_PROJET, TAB_PREPARATION_DONNEES.groupe_projet, TAB_PREPARATION_DONNEES.mont_accorde
    ORDER BY TAB_PREPARATION_DONNEES.groupe_projet
    PIVOT TAB_PREPARATION_DONNEES.periode_versement;
    et si je commence à en ajouter plus de registres, il va me créer plus de columnes qui ne correspondent pas au periode de versements.

    Je vous remercie si qqun peut m'aider

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Salut,

    Si ton tableau de période est dans un formulaire, il faut peut-être définir des paramètres pour ne sélectionner que les périodes que tu souhaites.

    Regardes aussi du côté de l'opérateur In au niveau de la clause Pivot dans ton sql pour limiter les colonnes:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    PIVOT TAB_PREPARATION_DONNEES.periode_versement IN ("Janvier","Février","Mars"...)

    A+

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Ok,j'ai essayé avec l'operateur In, ça marche, il ne crée plus de colonnes, mais les valeurs disparaitrent. J'ai regardé les relations des tableaux. Il y a un tableau Projet qui est lié avec une relation un-plusiers au tableau Versements. Dans le tableau versements je define avec une liste deroulante le periode de versements. Si je rentre des nouveaux donnes concernants les versements d'un projet, il me genere dans un autre tableau que je vais utiliser pour faire l'analyse croisé le periode 1,2,3, etc. qui n'appartient pas à la liste deroulante créée, et c'est pour ça qui les colonnes 1,2,3, etc sont créées. Je comprends pas.
    Merci si vous pouvez me clarifier le probleme.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Tu as quoi comme exemples de valeurs pour le champ [periode_versement] dans ta table "TAB_PREPARATION_DONNEES" ?

    Merci,

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    les periodes sont divisés en 2009-2010, 2010-2011, 2012-2013, avec la posibilité d'augmenter la liste et les valeurs sont monaitaires, les en-tete de colonnes devraient être 2009-2010, 2010-2011, 2012-2013, mais la table mais genere des en-tetes 1,2,3....

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Re,

    Peux-tu poster le nouveau sql de ta requête avec le IN ?

    Merci !

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    le code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(TAB_PREPARATION_DONNEES.mont_vers) AS SommeDemont_vers
    SELECT TAB_PREPARATION_DONNEES.ID_PROJET, TAB_PREPARATION_DONNEES.groupe_projet AS Groupe, TAB_PREPARATION_DONNEES.nom_respon, TAB_PREPARATION_DONNEES.prenom_respon, TAB_PREPARATION_DONNEES.NOM_OFFICIEL, TAB_PREPARATION_DONNEES.titre_projet, TAB_PREPARATION_DONNEES.duree_projet, TAB_PREPARATION_DONNEES.Requête_Region_Adm_NOM_OFICL, TAB_PREPARATION_DONNEES.mont_accorde
    FROM TAB_PREPARATION_DONNEES
    GROUP BY TAB_PREPARATION_DONNEES.ID_PROJET, TAB_PREPARATION_DONNEES.groupe_projet, TAB_PREPARATION_DONNEES.nom_respon, TAB_PREPARATION_DONNEES.prenom_respon, TAB_PREPARATION_DONNEES.NOM_OFFICIEL, TAB_PREPARATION_DONNEES.titre_projet, TAB_PREPARATION_DONNEES.duree_projet, TAB_PREPARATION_DONNEES.Requête_Region_Adm_NOM_OFICL, TAB_PREPARATION_DONNEES.mont_accorde
    ORDER BY TAB_PREPARATION_DONNEES.groupe_projet
    PIVOT TAB_PREPARATION_DONNEES.periode_versement In ("2009-2010","2010-2011","2011-2012","2012-2013","2013-2014","2014-2015","2015-2016");

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Salut,

    Si je comprends bien tu as une liste déroulante comme liste de choix du champ période de ta table.

    Peux-tu donner les valeurs attribuées aux propriétés:

    Contenu
    Colonne liée
    Nbre colonnes


    De cette liste déroulante.

    Merci.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Merci!!! tu m'a donné une idée, j'ai changé les relations des tableaux et maintenant ça marche. Les colonnes générées sont correctes. Mais il manque certains valeurs dans le tableau croisé pour certains periodes. Est-ce que tu as une idée pourquoi les valeurs n'apparaissent pas?

    Merci à nouveau

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Tu parles de relations peux-tu poster le sql en question ?

    Est-ce que "TAB_PREPARATION_DONNEES" est une table ou une requête ?

    Merci !

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    le tableau TAB_PREPARATION_DONNEES est le resultat d'une requête creation. Le code de cette requête est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TAB_PROJET.ID_PROJET, TAB_PROJET.groupe_projet, TAB_RESPONSABLE.nom_respon, TAB_RESPONSABLE.prenom_respon, TAB_RESPONSABLE.NOM_OFFICIEL, UNO011_UNO01VEE_ETABL_ENSGN.CRM07ECR_CD_ID_REG_ADM, Requête_Region_Adm.NOM_OFICL, UNO011_UNO01VEE_ETABL_ENSGN.CRM02ECE_CD_CIRCN_ELECTORALE, REQ_CIRCONSCRIPTION.NOM_OFICL, TAB_PROJET.titre_projet, TAB_EVAL_DETAILLE.resultat_evDetaille, TAB_EVAL_DETAILLE.mont_accorde, TAB_VERSEMENTS.periode_versement, TAB_VERSEMENTS.mont_vers, TAB_PROJET.duree_projet, TAB_PROJET.etat_projet, TAB_PROJET.date_debut, TAB_PROJET.date_fin INTO TAB_PREPARATION_DONNEES
    FROM (TAB_RESPONSABLE INNER JOIN ((UNO011_UNO01VEE_ETABL_ENSGN INNER JOIN REQ_CIRCONSCRIPTION ON UNO011_UNO01VEE_ETABL_ENSGN.CRM02ECE_CD_CIRCN_ELECTORALE = REQ_CIRCONSCRIPTION.CD_CIRCN_ELECT_PROV) INNER JOIN Requête_Region_Adm ON UNO011_UNO01VEE_ETABL_ENSGN.CRM07ECR_CD_ID_REG_ADM = Requête_Region_Adm.CD_REGN_ADMIN) ON TAB_RESPONSABLE.NOM_OFFICIEL = UNO011_UNO01VEE_ETABL_ENSGN.NOM_OFFICIEL) INNER JOIN ((TAB_PROJET INNER JOIN (TAB_PERIODES INNER JOIN TAB_VERSEMENTS ON TAB_PERIODES.periode_versement = TAB_VERSEMENTS.periode_versement) ON TAB_PROJET.ID_PROJET = TAB_VERSEMENTS.ID_PROJET) INNER JOIN TAB_EVAL_DETAILLE ON TAB_PROJET.ID_PROJET = TAB_EVAL_DETAILLE.ID_PROJET) ON TAB_RESPONSABLE.ID_RESPONSABLE = TAB_PROJET.ID_RESPONSABLE;
    Ce tableau je l'utilise pour faire l'analyse croisé, le code de la requête qui me donne des problèmes est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Sum(TAB_PREPARATION_DONNEES.mont_vers) AS SommeDemont_vers
    SELECT TAB_PREPARATION_DONNEES.ID_PROJET, TAB_PREPARATION_DONNEES.groupe_projet, TAB_PREPARATION_DONNEES.nom_respon, TAB_PREPARATION_DONNEES.prenom_respon, TAB_PREPARATION_DONNEES.NOM_OFFICIEL, TAB_PREPARATION_DONNEES.titre_projet, TAB_PREPARATION_DONNEES.duree_projet, TAB_PREPARATION_DONNEES.mont_accorde
    FROM TAB_PREPARATION_DONNEES
    GROUP BY TAB_PREPARATION_DONNEES.ID_PROJET, TAB_PREPARATION_DONNEES.groupe_projet, TAB_PREPARATION_DONNEES.nom_respon, TAB_PREPARATION_DONNEES.prenom_respon, TAB_PREPARATION_DONNEES.NOM_OFFICIEL, TAB_PREPARATION_DONNEES.titre_projet, TAB_PREPARATION_DONNEES.duree_projet, TAB_PREPARATION_DONNEES.mont_accorde
    PIVOT TAB_PREPARATION_DONNEES.periode_versement;
    Je n'ai pas mis l'operateur In comme tu m'avait dit parce que ça marche sans l'operateur.

    Merci

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Et "TAB_VERSEMENTS" est-ce une requête ou une table ?

    Le champ "periode_versement" est-ce un champ calculé ?

    Si oui, peux-tu donner l'expression de ce calcul ?

    Si non, vérifies les valeurs prises par ce champ : Sont-elles les mêmes que les valeurs "2009-2010","2010-2011","2011-2012","2012-2013","2013-2014","2014-2015","2015-2016" placées dans le In.

    A+

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    TAB_VERSEMENTS est une table et dans un champ est le champ "periode_versement", mais le champ "periode_versement" est lié à la liste Periodes où sont tous les periodes "2009-2010","2010-2011","2011-2012","2012-2013","2013-2014","2014-2015","2015-2016". Alors, à chaque personne je doit le relationer un, deux ou trois periodes de versements et pour chaque periode il y a un montant versé, et c'est le montant versé que disparaitre dans le tableau croisé

  14. #14
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    As-tu vérifié que la liaison entre "TAB_PERIODES.periode_versement" et "TAB_VERSEMENTS.periode_versement" se fait bien ?

    Quand tu ouvres la requête "TAB_PREPARATION_DONNEES" est-ce que toutes les périodes enregistrées dans la table "TAB_VERSEMENTS" apparaissent bien comme prévu ?

    A+

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Oui, j'ai déjà vérifié les relations, elles sont correctes, et les valeurs de la table TAB_PREPARATION_DONNEES sont tous là. C'est au moment quand je fait l'analyse croisé que les valeurs disparaissent par magie. Les valeurs sont dans la table TAB_VERSEMENT mais pas dans la dernier requête.

    A+

  16. #16
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Peux-tu poster ta base au format 2000 ?

    A+

  17. #17
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Non, la base de données est connectée avec une base de données en Oracle et il faut etre connecté au serveur, si je la poste ça va pas fonctionner. J'ai déjà essayé de la travailler sans la connexion au serveur et c'est impossible.

  18. #18
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Salut,

    Dans la table "TAB_VERSEMENTS" tu avais défini un champ avec une liste déroulante pour le champ "periode_versement".

    Peut-être que tu as sauvegardés des 1,2,3 dans ta table au lieu de "2009-2010","2010-2011","2011-2012".

    PEUT-ETRE QUE TU VOIS LES PERIODES "2009-2010","2010-2011","2011-2012" dans ta table mais en faite c'est les 1,2 et 3 qui sont SAUVEGARDES.

    Donc je repose la question :

    Pour ta liste déroulante de ton champ "periode_versement" dans ta table "TAB_VERSEMENTS"


    Peux-tu donner les valeurs attribuées aux propriétés:

    Contenu
    Colonne liée
    Nbre colonnes

    Même question si tu as une liste déroulante
    pour le champ "periode_versement" dans ta table "TAB_PERIODES".

    Merci !

  19. #19
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Désolé j'ai oublié te donner les informations
    Regarde, pour la TAB_VERSEMENTS dans le champ periode_versements:
    Contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [TAB_PERIODES].[periode_versement] FROM TAB_PERIODES ORDER BY [periode_versement];
    Colonne liée: 1
    Nbrs colonnes: 1

    et pour la table TAB_PERIODES est simplemente une table avec une colonne où je rentre les differents periodes.

    J'ai essayé de faire une requête parametré pour avoir les données par groupe (le champ TAB_PREPARATION_DONNEES.groupe_projet) et les valeurs apparaissent au complet pour chaque groupe, mais quand j'ai fait la totalité ça marche pas encore

    Merci pour ta patience avec ce problème

    A+

  20. #20
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    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 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Dommage que je puisse pas voir la base

    Tes champs "[periode_versement]" sont donc de type texte dans les 2 tables "[TAB_PERIODES]" et "TAB_VERSEMENTS" ?

    Peux-tu joindre à ton message 2 images de ce que t'affiche ta requête croisée :

    • Une image sans le In.
    • Une image avec le In.



    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] Union avec requête analyse croisée
    Par ALEX80800 dans le forum Access
    Réponses: 8
    Dernier message: 23/12/2011, 17h30
  2. [WD15] Problème avec l'analyse et les tables
    Par haykalo dans le forum WinDev
    Réponses: 6
    Dernier message: 15/12/2011, 12h25
  3. Etat dynamique avec requête analyse croisée
    Par roman33 dans le forum IHM
    Réponses: 2
    Dernier message: 03/05/2010, 14h22
  4. Nom de colonne avec requete analyse croisée
    Par benneb dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2009, 14h35
  5. crée etat avec requete analyse croisée
    Par popofpopof dans le forum IHM
    Réponses: 23
    Dernier message: 06/10/2007, 10h30

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