Somme ACCES ...

Fermé
thepunky89 Messages postés 18 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 30 avril 2009 - 11 janv. 2008 à 11:45
thepunky89 Messages postés 18 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 30 avril 2009 - 11 janv. 2008 à 13:44
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

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

Et tout est dit! ;-)
0
thepunky89 Messages postés 18 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 30 avril 2009 1
11 janv. 2008 à 11:51
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
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 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 30 avril 2009 1
11 janv. 2008 à 12:13
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 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
11 janv. 2008 à 12:15
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 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 30 avril 2009 1
11 janv. 2008 à 12:18
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
Remplace les ; par des , dans les 2 conditions iif pour commencer
0
dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
11 janv. 2008 à 12:29
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 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 30 avril 2009 1
11 janv. 2008 à 13:44
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