Somme ACCES ...
thepunky89
Messages postés
18
Statut
Membre
-
thepunky89 Messages postés 18 Statut Membre -
thepunky89 Messages postés 18 Statut Membre -
Bonjour,
J'aimerai faire la somme de deux sommes, Voici les deux requêtes en question :
SELECT SUM(perte)
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2';
Et :
SELECT SUM (ecart)
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
j'ai donc avec l'aide d'autres conversations du forum aboutis à celà :
SELECT DISTINCT (
SELECT SUM(perte)
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT SUM (ecart)
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
Le résultat est bon quand les deux requêtes ont un résultat chacune de leur coté mais si l'une des sommes est nulle (c'est à dire qu'elle n'est pas = 0 mais qu'il n'y a pas d'entrée à additionné dans l'une des requête) alors le résultat que me donne la somme des deux sommes est nul. Comment puis-je faire pour que si l'une des requêtes ne vaut rien que la somme se fasse quand même (que donc null + 10 =10 et non null? ).
Si vous voyez pas exactement ce que je veux dire je peux vous faire un exemple plus détaillé.
J'aimerai faire la somme de deux sommes, Voici les deux requêtes en question :
SELECT SUM(perte)
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2';
Et :
SELECT SUM (ecart)
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
j'ai donc avec l'aide d'autres conversations du forum aboutis à celà :
SELECT DISTINCT (
SELECT SUM(perte)
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT SUM (ecart)
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
Le résultat est bon quand les deux requêtes ont un résultat chacune de leur coté mais si l'une des sommes est nulle (c'est à dire qu'elle n'est pas = 0 mais qu'il n'y a pas d'entrée à additionné dans l'une des requête) alors le résultat que me donne la somme des deux sommes est nul. Comment puis-je faire pour que si l'une des requêtes ne vaut rien que la somme se fasse quand même (que donc null + 10 =10 et non null? ).
Si vous voyez pas exactement ce que je veux dire je peux vous faire un exemple plus détaillé.
A voir également:
- Somme ACCES ...
- Acces rapide - Guide
- Formule somme excel ligne - Guide
- Somme si couleur - Guide
- Accès refusé - Guide
- Accès presse papier - Guide
9 réponses
Euh ok merci, mais je le met où dans ma requête :
SELECT DISTINCT (
SELECT SUM(perte)
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT SUM (ecart)
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
à la suite ou inséré dedans? si tu pouvais me l'inséré dedans ça m'arrangerai car je suis pas un pro de l'access ^^.
SELECT DISTINCT (
SELECT SUM(perte)
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT SUM (ecart)
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
à la suite ou inséré dedans? si tu pouvais me l'inséré dedans ça m'arrangerai car je suis pas un pro de l'access ^^.
SELECT DISTINCT (
SELECT iif (isnull( sum(perte)); 0; sum(perte))
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT iif(isnull(sum(ecart));0;sum(ecart))
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
SELECT iif (isnull( sum(perte)); 0; sum(perte))
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT iif(isnull(sum(ecart));0;sum(ecart))
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
Merci mais il me dit que la synthaxe est mauvaise lors de l'execution...
Message d'erreur :" Syntax error in query expression 'iif(isnull(sum(perte)); 0; sum(perte))"
Pourtant j'ai que fais un copier collé de la requpete que tu m'as marqué. Je te remercie de m'aider encore si tu peux...
Tu es sur de la synthaxe?
Message d'erreur :" Syntax error in query expression 'iif(isnull(sum(perte)); 0; sum(perte))"
Pourtant j'ai que fais un copier collé de la requpete que tu m'as marqué. Je te remercie de m'aider encore si tu peux...
Tu es sur de la synthaxe?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Désolé mes souvenirs access sont anciens, mais il me semble qu'il y a possibilité d'aliasser une requête, et de tester cet alias avec la fonction IsNull et de retourner la valeur 0 sur cet alias si le résultat est True.
Par ailleurs, toujours si mes souvenirs sont bons, au niveau de tes tables, il est possible de ne pas prendre en compte la valeur Null.
Je réinstalle Acces et je vérifie.
Par ailleurs, toujours si mes souvenirs sont bons, au niveau de tes tables, il est possible de ne pas prendre en compte la valeur Null.
Je réinstalle Acces et je vérifie.
Ok je vous remercie par avance, par contre je vais en pause déjeuner, je reviens donc dans une heure. Merci d'avance en tout cas :)
Ma deuxième solution est jouable.
Lors de la création d'une colonne, la valeur par défaut de Null interdit dans l'onglet général est non.
Remplace donc cette valeur par oui dans tes colonnes perte et ecart
Si cen'est pas le cas tu risque s'avoir le même problème au niveau de tes SUM, a savoir SUM(perte)=null si un perte est null
Lors de la création d'une colonne, la valeur par défaut de Null interdit dans l'onglet général est non.
Remplace donc cette valeur par oui dans tes colonnes perte et ecart
Si cen'est pas le cas tu risque s'avoir le même problème au niveau de tes SUM, a savoir SUM(perte)=null si un perte est null
Merci à vous deux pour votre aide! la bonne solution a été celle de BNB mais avec les virgules et ça fonctionne très bien voici la solution donc :
SELECT DISTINCT (
SELECT iif (isnull( sum(perte)),0, sum(perte))
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT iif(isnull(sum(ecart)),0,sum(ecart))
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
Merci encore :)
SELECT DISTINCT (
SELECT iif (isnull( sum(perte)),0, sum(perte))
FROM PANNES_PERTE_TEMP
WHERE famille = 'sousperformance' and equipe='2')
+
(SELECT iif(isnull(sum(ecart)),0,sum(ecart))
FROM PANNES_PERTE_TEMP_ECART
WHERE equipe = '2')
FROM PANNES_PERTE_TEMP;
Merci encore :)