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

Access Discussion :

Aide pour requête


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 21
    Points : 5
    Points
    5
    Par défaut Aide pour requête
    Bonjour,

    Mon soucis est le suivant : J'ai une table access contenant des champs dont un champ [CAMPAGNE] en format texte (ex: 12/13), un champ[PERIOD_LAB] contenant des dates en format jj/mm/aaaa et un champ [QUANTITE] en format numérique.
    Sachant qu'une campagne va du mois de juin d'une année n au mois de juillet de l'année suivante (ex : de juin 2012 à juillet 2013) et que si je fais une requête sur plusieurs campagnes, il se peut que dans une ou plusieurs campagnes tous les mois n'apparaisse pas car aucune donnée. Comment faire pour dire à Access de m'afficher ces mois quand même avec une quantité à 0.

    Merci pour votre aide.

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Meud92,

    Avant d'aller plus loin, il y a une chose que je ne saisi pas:
    Sachant qu'une campagne va du mois de juin d'une année n au mois de juillet de l'année suivante (ex : de juin 2012 à juillet 2013)
    Ça fait 13 mois dans ton année, est-ce bien ce que tu veux?

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 21
    Points : 5
    Points
    5
    Par défaut Petite erreur
    Bonjour Robert

    Oups désolé me suis trompé dans les dates : c'est de juillet à juin soit du 1er juillet 2012 au 30 juin 2013.

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Meud92,

    Est-ce qu'une requête analyse croisée n'est pas ce que tu recherches?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Sum(TaTable.QUANTITE) AS SommeQUANTITE
    SELECT TaTable.CAMPAGNE, Sum(TaTable.QUANTITE) AS [Total campagne]
    FROM TaTable
    GROUP BY TaTable.CAMPAGNE
    PIVOT Format([PERIOD_LAB],"mmm") In ("juil","août","sept","oct","nov","déc","janv","févr","mars","avr","mai","juin");
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 21
    Points : 5
    Points
    5
    Par défaut RE
    Non je ne pense pas car à part m'afficher les mois manquants, cela ne permet pas de modifier le résultat de la requête initiale. Ce que je souhaite c'est que le résultat de la requête fasse apparaître les mois où il y des données et quand même les mois où il n'y a aucune données. Je ne sais pas si je suis clair ?

  6. #6
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Bonjour,
    Pouvez-vous utiliser une table avec les douze mois ?

    J'ai créé la table "010 TBL Mois" qui contient 2 colonnes :
    Mois_T Mois_I
    Janvier 1
    fevrier 2
    Mars 3
    avril 4
    mai 5
    juin 6
    juillet 7
    aout 8
    septembre 9
    octobre 10
    nov 11
    dec 12
    avec douze lignes.

    Ensuite je fais une query avec un LEFT JOIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [010 TBL Mois].Mois_T, [010 TBL Mois].Mois_I, [010 QRY Mois].Campagne, [010 QRY Mois].Period_Lab, [010 QRY Mois].Quantite
    FROM [010 TBL Mois] LEFT JOIN [010 QRY Mois] ON [010 TBL Mois].Mois_I=[010 QRY Mois].Mois;
    Cela m'assure un résultat de douze lignes meme si il n'y a eu de l'activité que pendant trois des douze mois.

  7. #7
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Oui, j'avais aussi une petite query pour voir le mois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Table1.Campagne, Table1.Period_Lab, Table1.Quantite, Month([Period_Lab]) AS Mois
    FROM Table1;

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 21
    Points : 5
    Points
    5
    Par défaut RE PIPO
    Bonjour PIPO

    Tout d'abord merci pour ta réponse mais je ne comprend pas bien ton exemple sauf la création de la table. Une query c'est une requête ? Avec ça efffectivement j'ai compris que cela va m'afficher 12 lignes mais comment je l'intègre par exemple à ma requête contenant 8 champs (avec 5 tables dont 4 liées à la première : tbl données import/exports, tbl pays reporter, tbl pays partner, tbl codes produits et tbl ampagnes) et des critères de sélection comme les pays, les campagnes, le type de produit... ? De plus je précise que cette requête est ensuite ouverte sous excel pour faire un tableau croisé dynamique et faire un graphique.

  9. #9
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Meud92,

    La solution de PipoWIL est sensiblement la même qu'un "PIVOT". Elle va afficher tous les mois de la table mois et les résultats correspondants de l'autre table, mais tu dis:
    Non je ne pense pas car à part m'afficher les mois manquants, cela ne permet pas de modifier le résultat de la requête initiale.
    et dans les 2 cas il te sera impossible de modifier les données.

    Maintenant si par modification tu veux dire les critères (Where)
    et des critères de sélection comme les pays, les campagnes, le type de produit... ?
    Cela se fait de la même manière que tu procèdes maintenant. Dans le Where clause de la requête.

    Bonne chance
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 21
    Points : 5
    Points
    5
    Par défaut RE
    Donc si je comprends bien je crée d'abord une table genre "tbl Calendrier" avec les 12 mois comme indiqué par PIPO. Ensuite je crée ma requête avec mes différentes tables et champs. Je saisis mes critères habituels (pays, campagne...) et ensuite comment je fais la query de PIPO ? Je la saisie où dans ma requête. C'est ça que je ne comprends pas !!! Désolé mais je ne connais pas Access comme un pro !!!

  11. #11
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Meud92,

    Ici je commence par la requête de base (R_Base) pour l'année "12/13" et on fait la somme des quantités:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_EXEMPLE.CAMPAGNE, Month([PERIOD_LAB]) AS LeMois, Sum(T_EXEMPLE.QUANTITE) AS SommeDeQUANTITE
    FROM T_EXEMPLE
    GROUP BY T_EXEMPLE.CAMPAGNE, Month([PERIOD_LAB])
    HAVING (((T_EXEMPLE.CAMPAGNE)="12/13"));
    Puis une requête qui te donnerait le mois et le total:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MonthName([Num_Mois],True) AS Le_Mois, Nz([SommeDeQUANTITE],0) AS Total_Mois
    FROM T_Calendrier LEFT JOIN R_Base ON T_Calendrier.Num_Mois = R_Base.LeMois;
    Comme la jointure est sur la table T_Calendrier tu vas avoir les 12 mois de l'année "12/13" et la fonction Nz va mettre 0 pour les mois qui n'ont pas de données. Pour que ce soit plus visuel la fonction MonthName transforme les chiffres en nom du mois, le True pour avoir l'abréviation.

    Une telle requête basé sur la table T_Calendrier fonctionnera seulement pour une année. Si tu fais la même chose avec 2 années et qu'il y a des nulls tu n'auras pas le résultat escompté, il faudra que tu ajoutes une table pour les années et faire une autre jointure.

    Bonne chance
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 21
    Points : 5
    Points
    5
    Par défaut RE
    Merci bien à vous pour cette aide. J'ai réussi. Génial. Merci.

Discussions similaires

  1. Besoin d'aide pour requête sur grosse table
    Par Fabouney dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/01/2006, 09h01
  2. [SQL] Aide pour requête
    Par portu dans le forum Access
    Réponses: 8
    Dernier message: 23/09/2005, 13h05
  3. Aide pour requête de Tri assez spécial (Oracle)
    Par Chips dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/04/2005, 10h56
  4. [sqlbaseserver]demande de conseils/aides pour requêtes
    Par GéniuS77 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 18/03/2004, 17h27
  5. Aide pour Requête
    Par Guiche dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/11/2003, 20h18

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