Somme ACCES ...

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é.
A voir également:

9 réponses

bnb
 
iif (isnull( sum(perte)); 0; sum(perte))
iif(isnull(sum(ecart));0;sum(ecart))

Et tout est dit! ;-)
0
thepunky89 Messages postés 18 Statut Membre 1
 
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 ^^.
0
bnb
 
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;
0
thepunky89 Messages postés 18 Statut Membre 1
 
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dandypunk Messages postés 838 Statut Membre 83
 
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.
0
thepunky89 Messages postés 18 Statut Membre 1
 
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 :)
0
bnb
 
Remplace les ; par des , dans les 2 conditions iif pour commencer
0
dandypunk Messages postés 838 Statut Membre 83
 
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
0
thepunky89 Messages postés 18 Statut Membre 1
 
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 :)
0