Rechercher : dans
Par :

[SQL] Somme des champs d'un enregistrement

Dernière réponse le 7 sep 2009 à 12:10:39 Laaris, le 29 avr 2008 à 15:16:15 
 Signaler ce message aux modérateurs

Bonjour,

Je travaille sous Access 97. J'ai plusieurs tables dans ce style:

Clé   Attr1
 1       2
 2       1
 3       1


Clé   Attr2
 2       1
 3       2


Clé   Attr3
 1       1
 3       1



A l'aide de jointures externes j'obtiens:
Clé   Attr1   Attr2   Attr3
 1       2                 1
 2       1        1
 3       1        2        1



Je voudrais maintenant ajouter un quatrième attribut qui serait la somme des attributs attr1, attr2, attr3. Ce qui donnerait:
Clé   Attr1   Attr2   Attr3   Somme
 1       2                 1      3
 2       1        1               2
 3       1        2        1      3


Sauf que je n'y arrive pas, j'ai essayé en faisant (Attr1+Attr2+Attr3) as Somme. Je ne pense pas que SUM soit utilisable dans ce cas là (d'ailleurs j'ai essayé et ça marche pas). La requête renvoie une table où l'attribut somme est présent mais toujours NULL.

Quelqu'un pour m'aider?

Merci d'avance.
Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « [SQL] Somme des champs d'un enregistrement » dans :
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...

1

Laaris, le 29 avr 2008 à 16:13:39

Visiblement, ma syntaxe est bonne mais la requête renvoie NULL pour chaque ligne parce que chaque ligne a au moins un attribut NULL.

Comment faire pour qu'ils considère les attributs NULL comme égaux à zéro et effectue l'addition?

Répondre à Laaris

2

Laaris, le 29 avr 2008 à 16:48:29

Up, désolé je n'aime pas faire de la remontée de topic comme ça, mais je ne trouve vraiment pas de solution à mon problème.

Merci de votre compréhension et de votre future aide. ^^

Répondre à Laaris

3

cchristian, le 29 avr 2008 à 17:57:27

Bonjour,

Je ne sais pas si je pourrais t'aider car je ne connais pas ACCESS, mais je pense que tu ne donnes pas suffisamment d'indications, par exemple :

- ta ou tes requêtes SQL, (la trame au moins)
- le type et les caractéristiques des colonnes à additionner, (si possible les CREATE des tables)
- pourquoi la fonction colonne SUM ne fonctionne pas, car, à priori si les colonnes sont décrites numériques il n'y a pas de raison pour que ça ne fonctionne pas.
- ......................
Cordialement.

Cchristian.

Répondre à cchristian

4

Laaris, le 30 avr 2008 à 08:46:13

Merci pour ta réponse.

Ma requête est du style

SELECT clé, Attr1, Attr2, Attr3, (Attr1+Attr2+Attr3) AS Somme

FROM (table_1 LEFT JOIN table_2 ON table_1.clé=table_2.clé) LEFT JOIN table_3 ON table_1.clé=table_3.clé;


Les colonnes à additionner sont de type entier mais à cause de la jointure externe elles peuvent contenir un NULL (et c'est là qu'est le problème à mon avis).

SUM ne fonctionne pas parce qu'il permet seulement de faire la somme d'attributs en colonnes, par exemple si je voulais la somme de Attr1 pour tous les enregistrements, je ferai SUM(Attr1). Là ce n'est pas le cas, je veux la somme des différents arguments d'une même ligne.

Répondre à Laaris

5

Laaris, le 30 avr 2008 à 09:35:43

J'ai résolu mon problème.

En utilisant la fonction Nz(attr,0) dans ma requête, j'ai transformé les NULL en zéros et l'addition se fait sans problème.

Répondre à Laaris

6

cchristian, le 30 avr 2008 à 12:20:20

Bonjour,

OK, tant mieux ! Bon courage Cordialement.

Cchristian.

Répondre à cchristian

10

 Acrstfl, le 7 sep 2009 à 12:10:39

Face au même problème que Laaris mais en utilisant une base Oracle je viens de tomber sur ce post un an après.
Au cas où quelqu'un ait le même problème voici la solution pour une base oracle :
Utiliser la fonction nvl(champA,0) pour arriver à remplacer les null par un zéro dans le champ champA.

Répondre à Acrstfl

7

edward82, le 14 jun 2008 à 09:21:42

Salut, j'ai une table "tags" dans ma base de données avec 3 colonnes: "id, tag, count", je voudrais additionner (regrouper) les "tag" identiques (chacun des tag ayant un count = 1)

ma table "tags"
id tag count
1 pomade 1
2 bas 1
3 pomade 1
4 pomade 1
5 bas 1
6 sol 1
7 sol 1
8 bas 1

resultat voulu:
id tag count
1 pomade 3
2 bas 3
3 sol 2

merci

Répondre à edward82

8

Laaris, le 18 jun 2008 à 15:25:28

Select tag, sum(count)
from tags
group by tag;

Répondre à Laaris

9

edward82, le 19 jun 2008 à 13:24:32

Bonjour, j'ai voulu faire un update de ma table "tags" en faisant la somme des tag similaires mais j'ai le message :

Ma requette est la suivante:
UPDATE tags
SET count = (select sum (count))
FROM tags where tag = tag
group by tag

MySQL a répondu:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM tags where tag = tag
group by tag' at line 3

Répondre à edward82
Collection CommentÇaMarche.net