Maison > base de données > tutoriel mysql > Pourquoi mes calculs de somme SQL sont-ils incorrects lors de la combinaison de plusieurs tables, et comment puis-je les corriger à l'aide de sous-requêtes ?

Pourquoi mes calculs de somme SQL sont-ils incorrects lors de la combinaison de plusieurs tables, et comment puis-je les corriger à l'aide de sous-requêtes ?

Patricia Arquette
Libérer: 2024-12-28 19:18:11
original
579 Les gens l'ont consulté

Why are my SQL sum calculations incorrect when combining multiple tables, and how can I fix them using subqueries?

Combinaison de données de plusieurs tables pour la sommation : traitement des résultats incorrects

Dans votre requête SQL, vous souhaitez récupérer une table composée de trois colonnes : "PROJET", "SUM_AP" et "SUM_INV." Cependant, vous avez rencontré des résultats incorrects en raison du regroupement dans le processus d'agrégation.

Cause des résultats incorrects :

La clause "GROUP BY" dans votre requête combine des valeurs en fonction dans la colonne "AP.[PROJET]". Ce processus d'agrégation résume essentiellement les entrées « Valeur » en double, ce qui conduit à des résultats gonflés.

Solution : Utilisation de requêtes de sous-sélection

Pour résoudre ce problème, nous pouvons modifier votre requête en utilisant la sous-sélection requêtes :

SELECT 
    AP1.[PROJECT],
    (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP,
    (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV
FROM 
    AP AS AP1 
    INNER JOIN INV AS INV1 
        ON (AP1.[PROJECT] =INV1.[PROJECT])
WHERE 
    AP1.[PROJECT] = 'XXXXX'
GROUP BY 
    AP1.[PROJECT]
Copier après la connexion

Explication :

  • Les sous-requêtes au sein des fonctions SUM() calculent les sommes des entrées « Valeur » à partir du « AP " et "INV", respectivement, pour chaque valeur unique "PROJECT".
  • La requête principale rejoint ensuite ces sous-requêtes, en fonction sur les valeurs "PROJET" correspondantes, et agrège à nouveau les résultats pour produire le tableau final.

Cette requête révisée garantit que seules les valeurs "PROJET" distinctes sont regroupées et que les sommes sont calculées correctement, fournissant le résultat escompté.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal