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]
Explication :
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!