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 croisée calcul Somme incorrect [AC-365]


Sujet :

Requêtes et SQL.

  1. #21
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Bonjour,

    Avant de continuer, il faudrait que les données soient tout à fait correctes. Un problème vient déjà que dans la table T_Performance, il n'y a pas d'enregistrement avec IDPerformance = 10 (ce qui provoque un problème de lien avec la table T_SPerformance).

    Par ailleurs, dans la table T_SPerformance il ne devrait pas y avoir le champ IDProduits vu que celui-ci est implicitement contenu dans le champ IDSProduits. Il y a ainsi une anomalie pour IDSPerformance = 129 qui met IDProduits = 10 (alors que cela devrait être IDProduit = 6).
    Nom : Perf_SPerf.png
Affichages : 144
Taille : 10,2 Ko

    Pour éviter ce genre de problème il faut utiliser l'outil "Relations" dès le départ.

    Cordialement.

  2. #22
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    A vérifier. Requête modifiée après avoir supprimé le champ IDProduits dans la table T_SPerformance et créé toutes les relations entre les tables (voir fenêtre "Relations")
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #23
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    A vérifier. Requête modifiée après avoir supprimé le champ IDProduits dans la table T_SPerformance et créé toutes les relations entre les tables (voir fenêtre "Relations")
    Cordialement.
    Allo, alors comment je fait pour avoir le IDProduit dans mon État? car avec la fonction SI c'a me prend celà pour déterminer mon calcul.
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  4. #24
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Pour cela il suffit d'exploiter la relation entre T_Produits et T_SProduits.
    Dans le fichier déjà envoyé, pour l'état E_ComparatifPenetrationMoyenneMois, il suffit de remplacer la "Source" actuelle par celle donnée: R_ComparatifPenetrationMoyenneMois_1 (qui utilise cette relation).
    Cordialement.

  5. #25
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Sans tout à fait comprendre tous les champs de toutes les tables, j'ai l'impression que ce que vous essayez de faire est d'avoir l'évolution des performances pour chaque SProduit. Si c'est bien cela, la requête devrait être construite sur les relations suivantes:
    Nom : SPerf.png
Affichages : 129
Taille : 16,1 Ko
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRANSFORM IIf([T_Produits]![IDProduits]=1,Sum([T_SPerformance]![QTS])/Sum([T_Performance]![NbFinance]),Sum([T_SPerformance]![QTS])/Sum([T_Performance]![NbUniteLivre])) AS primeMoyenne
    SELECT T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_Produits.IDProduits, T_SPerformance.IDSProduits, Month([T_Performance]![PerformanceDate]) AS Mois
    FROM (T_Produits RIGHT JOIN T_SProduits ON T_Produits.IDProduits = T_SProduits.IDProduits) LEFT JOIN ((T_Detaillant RIGHT JOIN T_Performance ON T_Detaillant.IDDetaillant = T_Performance.IDDetaillant) RIGHT JOIN T_SPerformance ON T_Performance.IDPerformance = T_SPerformance.IDPerformance) ON T_SProduits.IDSProduits = T_SPerformance.IDSProduits
    WHERE (((T_Performance.PerformanceDate) Between RecupDate(1) And RecupDate(2) Or (T_Performance.PerformanceDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_Produits.IDProduits, T_SPerformance.IDSProduits, Month([T_Performance]![PerformanceDate])
    ORDER BY T_Produits.IDProduits
    PIVOT Format([PerformanceDate],"yyyy");
    Cordialement.

    P.S. Cela ne doit pas encore être cela vu qu'il y a des enregistrements dans T_Performance qui n'ont aucun enregistrement lié dans T_SPerformance.

  6. #26
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Pour cela il suffit d'exploiter la relation entre T_Produits et T_SProduits.
    Dans le fichier déjà envoyé, pour l'état E_ComparatifPenetrationMoyenneMois, il suffit de remplacer la "Source" actuelle par celle donnée: R_ComparatifPenetrationMoyenneMois_1 (qui utilise cette relation).
    Cordialement.
    Bonjour EricDgn,
    Désolé ça marche pas plus, pourtant tout mes autres fonctionnes, je vais essayer autres choses et te reviens.

    Merci de ton aide!
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  7. #27
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,
    Citation Envoyé par DidoFido Voir le message
    Bonjour à tous, j'ai fait une requête croisée avec une expression comme valeur entre 2 année (1 mois), le calcul se fait bien quand je sélectionne seulement 1 mois ex:
    RecupDate 1 = 01-01-2020 et RecupDate 2 = 31-01-2020
    RecupDate 3 = 01-01-2021 et RecupDate 4 = 31-01-2021

    Sauf quand j'utilise plus que 2 mois, les calculs me donne pas le bon résultat. j'utilise la fonction Iif. (Si IDProduits = 1 le calcul dois se faire sur NbFinance Si non le calcul doit se faire sur NbUniteLivre)
    quel devrait être le résultat avec plusieurs mois ?
    faut il regrouper tous les mois pour avoir un bon calcul ? Si oui, il faut commencer par enlever le regroupement sur le mois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_Produits.IDProduits, T_SPerformance.IDSProduits, Month([T_Performance]![PerformanceDate])
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #28
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,

    quel devrait être le résultat avec plusieurs mois ?
    faut il regrouper tous les mois pour avoir un bon calcul ? Si oui, il faut commencer par enlever le regroupement sur le mois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_Produits.IDProduits, T_SPerformance.IDSProduits, Month([T_Performance]![PerformanceDate])
    Bonjour tee_grandbois,

    La raison pour laquelle nous avons fait un regroupement par mois, c'était pour vérifier si le calcul se faisait bien. et c'est le cas.
    Le problème est quand nous enlevons le regroupement, et que je veux comparer plusieurs moi ex: de janvier à mai, les résultats ne sont pas bon.

    Voici la requête avec le regroupement par mois
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRANSFORM IIf([T_SPerformance]![IDProduits]=1,Sum([T_SPerformance]![QTS])/Sum([T_Performance]![NbFinance]),Sum([T_SPerformance]![QTS])/Sum([T_Performance]![NbUniteLivre])) AS primeMoyenne
    SELECT T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_SPerformance.IDProduits, T_SPerformance.IDSProduits, Month([T_Performance]![PerformanceDate]) AS Mois
    FROM T_Detaillant INNER JOIN (T_Performance INNER JOIN T_SPerformance ON T_Performance.IDPerformance = T_SPerformance.IDPerformance) ON T_Detaillant.IDDetaillant = T_Performance.IDDetaillant
    WHERE (((T_Performance.PerformanceDate) Between RecupDate(1) And RecupDate(2) Or (T_Performance.PerformanceDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_SPerformance.IDProduits, T_SPerformance.IDSProduits, Month([T_Performance]![PerformanceDate])
    ORDER BY T_SPerformance.IDProduits
    PIVOT Format([PerformanceDate],"yyyy");
    et voici la requête sans le regroupement mois
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRANSFORM IIf([T_SPerformance]![IDProduits]=1,Sum([T_SPerformance]![QTS])/Sum([T_Performance]![NbFinance]),Sum([T_SPerformance]![QTS])/Sum([T_Performance]![NbUniteLivre])) AS Penetration
    SELECT T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_SPerformance.IDProduits, T_SPerformance.IDSProduits
    FROM T_Detaillant INNER JOIN (T_Performance INNER JOIN T_SPerformance ON T_Performance.IDPerformance = T_SPerformance.IDPerformance) ON T_Detaillant.IDDetaillant = T_Performance.IDDetaillant
    WHERE (((T_Detaillant.NomDetaillant)="Kia Gaspé") AND ((T_Performance.PerformanceDate) Between RecupDate(1) And RecupDate(2) Or (T_Performance.PerformanceDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_SPerformance.IDProduits, T_SPerformance.IDSProduits
    ORDER BY T_Performance.IDTypeTransaction, T_SPerformance.IDProduits, T_SPerformance.IDSProduits
    PIVOT Format([PerformanceDate],"yyyy");
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  9. #29
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Attention, dans la seconde requête la clause Where contient une condition supplémentaire par rapport à la première:
    ... T_Detaillant.NomDetaillant)="Kia Gaspé" ...

    Cordialement.

  10. #30
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonjour,
    Le problème est quand nous enlevons le regroupement, et que je veux comparer plusieurs moi ex: de janvier à mai, les résultats ne sont pas bon.
    j'ai bien compris, mais, je le répète, quel résultat correct attends-tu quand il y a plusieurs mois puisque le calcul est le même, regroupement ou pas ?
    Autrement dit, plutôt que montrer les requêtes, montre-nous le résultat correct (calculé dans Excel, par exemple)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #31
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    j'ai bien compris, mais, je le répète, quel résultat correct attends-tu quand il y a plusieurs mois puisque le calcul est le même, regroupement ou pas ?
    Autrement dit, plutôt que montrer les requêtes, montre-nous le résultat correct (calculé dans Excel, par exemple)
    Voilà un image excellNom : ImageExcell.JPG
Affichages : 108
Taille : 45,4 Ko

    Si IDProduits = 1 (1 Assurance) doit calculé Nb Certificats (3) / Nb Financé (6) ce qui donnes 50%
    Si non doit calculé doit calculé Nb Certificats (1) / Nb Livraison (13) ce qui donnes 8%

    est-ce que vous comprenez ?
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  12. #32
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    oui j'ai compris le principe du calcul sauf qu'ici on ne voit pas vraiment le détail (quels sont les mois concernés ...)
    comment obtient-on: nombre financé 6 et nombre livraison 13 ? ils sont obtenus en regroupant quels champs ?
    ce serait bien de montrer ce qui est bon avec un mois et faux avec plusieurs ou si c'est le cas, le préciser sur le tableau
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #33
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour tee_grandbois,

    Il me viens une idée, j'ai fais des 3 requête croisées pour vérifier si j'ai bien les résultats désiré.
    La première requête croisée vérifie si NbUniteLivre m'affiche le bon nombre les résultâts son exact, et ce même si c'est entre plusieurs mois.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(T_Performance.NbUniteLivre) AS SommeDeNbUniteLivre
    SELECT T_Detaillant.IDDetaillant, T_Performance.IDDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction
    FROM T_Detaillant INNER JOIN T_Performance ON T_Detaillant.IDDetaillant = T_Performance.IDDetaillant
    WHERE (((T_Detaillant.IDDetaillant)=65) AND ((T_Performance.PerformanceDate) Between RecupDate(1) And RecupDate(2) Or (T_Performance.PerformanceDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.IDDetaillant, T_Performance.IDDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction
    PIVOT Format([PerformanceDate],"yyyy");
    La seconde requête croisée vérifie si NbFinance m'affiche le nombre les résultats son excat, et ce même si c'est entre plusieurs mois.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(T_Performance.NbFinance) AS SommeDeNbFinance
    SELECT T_Detaillant.IDDetaillant, T_Performance.IDDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction
    FROM T_Detaillant INNER JOIN T_Performance ON T_Detaillant.IDDetaillant = T_Performance.IDDetaillant
    WHERE (((T_Detaillant.IDDetaillant)=65) AND ((T_Performance.PerformanceDate) Between RecupDate(1) And RecupDate(2) Or (T_Performance.PerformanceDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.IDDetaillant, T_Performance.IDDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction
    PIVOT Format([PerformanceDate],"yyyy");
    Et la dernière requête croisées consiste à vérifier si le nombre de IDSProduits est exact, les résultats sont très bon. et ce même si c'est entre plusieurs mois.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRANSFORM Sum(T_SPerformance.QTS) AS SommeDeQTS
    SELECT T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_SPerformance.IDProduits, T_SPerformance.IDSProduits
    FROM (T_Detaillant INNER JOIN T_Performance ON T_Detaillant.IDDetaillant = T_Performance.IDDetaillant) INNER JOIN T_SPerformance ON T_Performance.IDPerformance = T_SPerformance.IDPerformance
    WHERE (((T_Detaillant.IDDetaillant)=65) AND ((T_Performance.PerformanceDate) Between RecupDate(1) And RecupDate(2) Or (T_Performance.PerformanceDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_Performance.IDPersonnel, T_Performance.IDTypeTransaction, T_SPerformance.IDProduits, T_SPerformance.IDSProduits
    ORDER BY T_Detaillant.NomDetaillant, T_Performance.IDTypeTransaction, T_SPerformance.IDSProduits
    PIVOT Format([PerformanceDate],"yyyy");

    Voir image Nom : Image Total.png
Affichages : 85
Taille : 375,1 Ko
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  14. #34
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour tee_grandbois,

    selon moi le dernier message n'était pas suffisamment clair hein ?
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  15. #35
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonjour,
    Citation Envoyé par DidoFido Voir le message
    Bonjour tee_grandbois,

    selon moi le dernier message n'était pas suffisamment clair hein ?
    le problème est qu'on te demande quelque chose (exemple, dans mon dernier message: comment obtient-on: nombre financé 6 et nombre livraison 13 ? ils sont obtenus en regroupant quels champs ? ce serait bien de montrer ce qui est bon avec un mois et faux avec plusieurs ou si c'est le cas, le préciser sur le tableau) et tu réponds autre chose, c'est (un peu) déconcertant
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  16. #36
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,

    le problème est qu'on te demande quelque chose (exemple, dans mon dernier message: comment obtient-on: nombre financé 6 et nombre livraison 13 ? ils sont obtenus en regroupant quels champs ? ce serait bien de montrer ce qui est bon avec un mois et faux avec plusieurs ou si c'est le cas, le préciser sur le tableau) et tu réponds autre chose, c'est (un peu) déconcertant
    Bonjour tee_grandbois, je suis désolé si parfois déconcertant .
    1- pour répondre à ta question "comment obtient-on: nombre financé 6 et nombre livraison 13", les données se trouve dans la table T_Performance , NbUniteLivre et NbFinance.
    2- Sur la première image , tu trouveras le résultat sur 1 mois
    Nom : 1mois.JPG
Affichages : 73
Taille : 179,3 Ko
    3- Sur la deuxième image, tu trouveras le résultat sur plusieurs mois.
    Nom : Plusieurs mois.JPG
Affichages : 89
Taille : 118,1 Ko

    Encore une fois désolé!
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  17. #37
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonjour,
    le nombre est obtenu par rapport aux occurrences trouvées dans la table T_SPerformance
    par exemple, pour IDperformance 43, les 5 sous-produits sont présents, donc le total donne bien 34 (5+1+3+19+6)
    pour IDperformance 31, il n'y a que 3 sous-produits (Manufacturier, Vie, ADR) il manque: Invalidité et Réserve, donc le total ne donne que 30 (5+19+6)

    Je pense que ton problème vient de là. Reste à savoir si c'est logique ou pas.
    Si tu dois avoir forcément les 5 sous-produits, il va falloir les ajouter et les valoriser à 0 lorsqu'ils sont manquants dans T_SPerformance ou la remplacer par une sous-requête de regroupement ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  18. #38
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    le nombre est obtenu par rapport aux occurrences trouvées dans la table T_SPerformance
    par exemple, pour IDperformance 43, les 5 sous-produits sont présents, donc le total donne bien 34 (5+1+3+19+6)
    pour IDperformance 31, il n'y a que 3 sous-produits (Manufacturier, Vie, ADR) il manque: Invalidité et Réserve, donc le total ne donne que 30 (5+19+6)

    Je pense que ton problème vient de là. Reste à savoir si c'est logique ou pas.
    Si tu dois avoir forcément les 5 sous-produits, il va falloir les ajouter et les valoriser à 0 lorsqu'ils sont manquants dans T_SPerformance ou la remplacer par une sous-requête de regroupement ...
    Tu as raison j'ai fais un test en ajoutant et les valorisé à 0, et le compte y est.

    Par contre je ne comprend pas ton "la remplacer par une sous-requête de regroupement"??
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  19. #39
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour tee_granbois
    Dans ma requête est-ce possible de mettre un Nz qui mettrais un 0 si aucune valorisation, si oui comment le faire?

    Car ceci m'éviterais d'entrée plusieurs données
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  20. #40
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    je pense que ce n'est pas possible: comment faire si on ne connait pas les sous-produits manquants ?
    c'est bien la table T_SPerformance qui pose problème pour le calcul.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. requête qui calcules les sommes
    Par bingo06260 dans le forum Débuter
    Réponses: 3
    Dernier message: 17/11/2011, 09h27
  2. [Doctrine] requête pour calculer une somme
    Par flora806 dans le forum ORM
    Réponses: 26
    Dernier message: 23/03/2011, 11h38
  3. Réponses: 4
    Dernier message: 03/05/2010, 13h56
  4. Calcul somme dans requête
    Par froutloops62 dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2006, 16h11
  5. [Requête] - [calcul] - Somme
    Par louroulou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/07/2006, 16h05

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