Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2990 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sommation en sql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sommation en sql

n°1931706
Jarod511
****
Posté le 14-10-2009 à 11:50:59  profilanswer
 

Bonjour,
 
Je fais appel à votre aide car le problème que j'ai dans ma requête sql me dépasse.
 
J'ai une table client (idclient, sexeclient, etc...), une table ressource (idclient, quantityres, idtyperes, idunitqutres, etc...), une table restype (id, name, etc...) et une table unitprim (id, etc ...)
 
J'ai mis uniquement le nom des colonnes qui m'interessent dans les tables. Ce que je voudrais faire, c'est comptabiliser le somme des ressources par type en fonction du sexe des clients.
 
J'ai fais une requête sql, mais je n'arrive pas à regrouper, par exemple :
pour 2 clients de même sexe et ayant le même type de ressources avec la même unité, la requête me retourne le résultat sur 2 lignes distinctes alors que je voudrais qu'il me la somme et qu'il me la regroupe.
 
Voici ma requête :
 

Code :
  1. select
  2. sexeclient, sum(b.ressource.quantityres) as "Somme ressources",
  3. count(b.client.sexeclient) as "Nombre clients",
  4. b.restype.name as "Type ressource"
  5. from
  6. b.client, b.ressource, b.unitprim, b.restype
  7. where
  8. b.client.idclient = b.ressource.idclient
  9. and b.ressource.idunitqutres = b.unitprim.id
  10. and b.ressource.idtyperes = b.restype.id
  11. group by (
  12. b.client.sexeclient, b.ressource.quantityres, b.restype.name
  13. )
  14. order by sexeclient;


 
Du coup ça me sort :
sexeclient    |    Somme des ressources    |    Nombre clients    |    Type ressource
--------------------------------------------------------------------------------
M               | 100                                 |          2               |   gpl
M               | 100                                 |          2               |   gpl
M               | 100                                 |          2               |   wire
 
J'aurais aimer avoir plutôt ce résultat :  
 
sexeclient    |    Somme des ressources    |    Nombre clients    |    Type ressource
--------------------------------------------------------------------------------
M               | 200                                 |          4               |   gpl
M               | 100                                 |          2               |   wire
 
Est ce que quelqu'un aurait une idée d'où vient le problème dans ma requête sql ?
Merci.

mood
Publicité
Posté le 14-10-2009 à 11:50:59  profilanswer
 

n°1931730
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-10-2009 à 13:45:54  profilanswer
 

ta requête marche très bien chez moi (Sql Server).
peux tu donner un exemple de tables remplies avec des données, histoire de voir si c'est bien ce que j'ai supposé ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1931772
Jarod511
****
Posté le 14-10-2009 à 14:57:05  profilanswer
 

Salut Harkonnen,
 
Voici un exemple de mes tables remplies avec des données :
 
Table client :
 
idclient    |    sexeclient    |    
---------------------------
3456       |    F
4124       |    F
3936       |    M
 
Table ressource :
 
idclient    |    quantityres    |    idtyperes    |    idunitqutres
----------------------------------------------------------
3936       |    500              |    16             |    3
3936       |       1              |    12             |    5
3936       |       1              |    12             |    5
3936       |       1              |    12             |    5
3936       |       1              |    12             |    5
3936       |       5              |    12             |    5
3936       |       5              |    12             |    5
3936       |       5              |    12             |    5
3936       |      10             |    16              |    3
3936       |      10             |    16              |    3
3936       |       5              |    13              |    5
3936       |       5              |    13              |    5
3936       |      10             |    16              |    3
4124       |       50             |    7              |    4
4124       |       50             |    7              |    4
4124       |       50             |    7              |    4
4124       |       10             |    9              |    5
4124       |         5             |    9              |    5
4124       |     400              |   16             |    3
4124       |     400              |   16             |    3
 
Table unitprim :
id    | name
------------
1     | cm3
2     | L
3     | µL
4     | mg
5     | ml
6     | pmol
7     | cel
8     | µg
9     | g
10   |  ng
11   |  pg
12   |  dL
 
Table restype :
 
id   |  nom
-----------------------------
12  | PBL
 
16  | GPL
 
7    | WIRE
 
9    | EDT
 

n°1931779
Jarod511
****
Posté le 14-10-2009 à 15:02:47  profilanswer
 

j'avais oublié le idclient 3456 dans la table ressource :
 
dclient    |    quantityres    |    idtyperes    |    idunitqutres
----------------------------------------------------------  
3456               50                7                4
3456               50                7                4
3456               50                7                4
3456            9989                3                9
3456                 5                7                9
3456                 5                6                9
3456                 4                9                5  
 
et dans la table restype l'id correspondant au 3 et au 6
 
id   |  nom
-----------------------------
3    | BLK
 
6    | HOH


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sommation en sql

 

Sujets relatifs
Plus de sujets relatifs à : sommation en sql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR