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 :

Requête statistiques imbriquées : Le casse tête !


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut Requête statistiques imbriquées : Le casse tête !
    Bonjour à tous,

    Je voudrais incruster dans une seule requête plusieurs statistiques provenant d'autres requêtes ayant entre elles en commun un regroupement mensuel.

    Requête 1 : [Mois de],[Heures Facturées]

    Voici la requête 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW UCase(Format$([Devis et Factures].[DateDoc],'mmmm yyyy')) AS [Mois de], Sum(RqCalculHeures.TotalHeures) AS [Heures Facturées]
    FROM [Devis et Factures] INNER JOIN RqCalculHeures ON [Devis et Factures].NumDocument = RqCalculHeures.NumDocument
    GROUP BY UCase(Format$([Devis et Factures].[DateDoc],'mmmm yyyy')), Year([Devis et Factures].[DateDoc])*12+DatePart('m',[Devis et Factures].[DateDoc])-1
    ORDER BY Year([Devis et Factures].[DateDoc])*12+DatePart('m',[Devis et Factures].[DateDoc])-1 DESC;
    Voici la requête 2 : [Mois de:],[Nb de Clients]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCTROW UCase(Format$([Devis et Factures].[DateDoc],'mmmm yyyy')) AS [Mois de], Count(*) AS [Nb de Clients], [Devis et Factures].TypeDoc, [Devis et Factures].EtatDocument
    FROM [Contacts Requête] INNER JOIN [Devis et Factures] ON [Contacts Requête].[IdContact] = [Devis et Factures].[IDClient]
    GROUP BY UCase(Format$([Devis et Factures].[DateDoc],'mmmm yyyy')), [Devis et Factures].TypeDoc, [Devis et Factures].EtatDocument, Year([Devis et Factures].[DateDoc])*12+DatePart('m',[Devis et Factures].[DateDoc])-1
    HAVING ((([Devis et Factures].TypeDoc)="facture") AND (([Devis et Factures].EtatDocument)="payé"))
    ORDER BY Year([Devis et Factures].[DateDoc])*12+DatePart('m',[Devis et Factures].[DateDoc])-1 DESC;
    .

    Je voudrais que soit reporté dans la 1ère grâce à un nouveau champ le résultat du champ [Nb de Clients] calculé dans la deuxième, donnant [Mois de :], [Heures Facturées],[Nb de clients], or au moment de l'incruster Access me dit qu'il y a incohérence de type ...

    Que se passe t'il ?

    Merci d'avance pour votre aide...

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    salut,
    pour ce que je lis ici :
    donnant [Mois de :], [Heures Facturées] + [Nb de clients]
    tu additionnerais des dates et des nombres

    mais comme tu ne nous donnes pas le code SQL de la requete qui semble être refusée par Access, et comme je n'ai plus de pile dans ma boule de cristal, il va falloir que tu en dises plus
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Bonjour,

    Le signe " + " était pour signifier que je rajoute à la première requête le résultat du champ nommé qui est correctement calculé dans la deuxième ...
    Autrement dit ce champ de résultat est une expression ajoutée à la première requête pour la compléter.

    Je recite le texte corrigé :

    "Je voudrais que soit reporté dans la 1ère grâce à un nouveau champ le résultat du champ [Nb de Clients] calculé dans la deuxième, donnant [Mois de :], [Heures Facturées],[Nb de clients], or au moment de l'incruster Access me dit qu'il y a incohérence de type ...

    Que se passe t'il ?"

    Merci pour ta réponse

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    OK, et sur quelle requête Access te "soulève" cette erreur ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    En voulant incruster en mode création le champ [Nb de Clients] venant de la 2ème dans la première , de façon à avoir une seule requête présentant les données importantes ...

    Le but étant de calculer le nombre de clients par mois en évitant aussi les doublons...

    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    hum, et une jointure entre les deux requetes, ce n'est pas plus simple ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Bonjour,

    J'ai réussi à joindre les requêtes mais je ne sais pas comment éviter les doublons dans le champ [CompteDeIDClient] !

    Merci pour ton aide ...

    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCTROW Format$([Devis et Factures].[DateDoc],'mmmm yyyy') AS [DateDoc par mois], [Devis et Factures].TypeDoc, [Devis et Factures].EtatDocument, Sum(RqCalculHeures.TotalHeures) AS SommeDeTotalHeures, Count([Devis et Factures].IDClient) AS CompteDeIDClient
     
    FROM [Devis et Factures] INNER JOIN RqCalculHeures ON [Devis et Factures].NumDocument = RqCalculHeures.NumDocument
     
    GROUP BY Format$([Devis et Factures].[DateDoc],'mmmm yyyy'), [Devis et Factures].TypeDoc, [Devis et Factures].EtatDocument, Year([Devis et Factures].[DateDoc])*12+DatePart('m',[Devis et Factures].[DateDoc])-1
     
    HAVING ((([Devis et Factures].TypeDoc)="facture") AND (([Devis et Factures].EtatDocument)="payé"))
     
    ORDER BY Year([Devis et Factures].[DateDoc])*12+DatePart('m',[Devis et Factures].[DateDoc])-1 DESC;

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    Ok,

    pourquoi le distinctrow et non pas distinct dans ta requete finale ?
    http://access.developpez.com/faq/?pa...pt#DistinctRow
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    Ok,

    pourquoi le distinctrow et non pas distinct dans ta requete finale ?
    http://access.developpez.com/faq/?pa...pt#DistinctRow
    Bonjour,

    J'y ai pensé moi aussi mais si je mets un "distinct" il me dit que cela crée un conflit avec la clause "order by".
    Si je supprime ce "order by" qui servait à mettre les "mois de" en ordre, il accepte le "distinct" mais en demandant de calculer le nombre de clients (grâce à IdClient) les doublons apparaissent !

    Il faut donc utiliser "distinctrow" pour pouvoir ensuite classer les mois par odre cela n'affectant en rien le calcul erronné du nombre de clients/mois...

    Donc d'après ce que je comprend le fait de faire une synthèse mensuelle n'est pas compatible avec distinct ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    hum, déjà sans le order by tu as ton résultat correct ?

    tu peux toujours ajouter le order by par la suite
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Bonjour, je viens de te répondre en haut

  12. #12
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    hum, déjà sans le order by tu as ton résultat correct ?

    tu peux toujours ajouter le order by par la suite
    Non, ça ne change rien, les doublons subsistent dans le champ "IdClient", cependant le champ de calcul totalheures provenant de l'autre requête est absolument exact...

    A n'y rien comprendre

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

Discussions similaires

  1. requête casse-tête pour une seule table..
    Par MikeV dans le forum Requêtes
    Réponses: 9
    Dernier message: 23/08/2007, 21h02
  2. Requête SQL casse-tête
    Par MikeV dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/06/2007, 14h09
  3. Requête (casse tête)
    Par shadeoner dans le forum SQL
    Réponses: 13
    Dernier message: 12/06/2007, 17h13
  4. Requête casse tête!
    Par sonorc dans le forum Langage SQL
    Réponses: 10
    Dernier message: 08/05/2007, 02h03
  5. requête SQL un peu casse tête
    Par hellbilly dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/12/2005, 10h03

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