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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sommes multiple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sommes multiple

n°698288
GOOOOO
Posté le 13-04-2004 à 14:22:07  profilanswer
 

Salut.
 
J'ai deux tables avec les champs suivant : opérateur,produit,mois et duré. Je veux afficher la somme des  durées par opérateur, par produit et par mois.
 
Seulement voilà pour l'opérateur x, le produit y et le mois z, j'ai trois lignes dans la première table et une seule dans la seconde. La requete me retourne la somme des durées des trois lignes de la table 1 (c'est ok!) mais 3*durée de la ligne de la table 2 !!!
 
OPÉRATEUR MOIS     PRODUIT      DURÉE
--------- -------- ------- ----------
GBBT      31/05/03 IDTF          6000
GBBT      31/05/03 IDTF          6000
GBBT      31/05/03 IDTF          6000
 
*
table 2 :
 
OPÉRA MOIS     PRODU      DURÉE
----- -------- ----- ----------
GBBT  31/05/03 IDTF        3000 <---------------------|
                                                      |
la requete retourne :                                 |
                                                      |
OPÉRATEUR MOIS     PRODUIT DURÉE 1 DURÉE 2            |
--------- -------- ------- ------- -------            |
GBBT      31/05/03    IDTF    6000    9000 <----------|
 
Comment faire pour ne pas re sommer une ligne déjà parcourue?
 
Merci, à +.

mood
Publicité
Posté le 13-04-2004 à 14:22:07  profilanswer
 

n°698502
Beegee
Posté le 13-04-2004 à 18:19:33  profilanswer
 

donne nous les requêtes !
 
et tu utilises quoi ? Oracle ? MySql ?
 
Les durées que tu devrais avoir dans ton exemple sont 18000 et 3000, c'est ça ?
 
Si tu peux, il ne faut pas faire de jointure directe entre table1 et table2 puisqu'apparemment il te faut les sommes des durées dans les 2 tables séparément ...
Donc qqch comme :

Code :
  1. SELECT result1.operateur, result1.mois, result1.produit, result1.duree1, result2.duree2
  2. FROM (SELECT operateur, mois, produit, sum(table1.duree) as duree1
  3.       FROM table1
  4.       GROUP BY operateur, mois, produit) resultat1,
  5.      (SELECT operateur, mois, produit, sum(table1.duree) as duree2
  6.       FROM table2
  7.       GROUP BY operateur, mois, produit) resultat2
  8. WHERE resultat1.operateur = resultat2.operateur
  9. AND resultat1.mois= resultat2.mois
  10. AND resultat1.produit= resultat2.produit;


Message édité par Beegee le 13-04-2004 à 18:19:52
n°698543
GOOOOO
Posté le 13-04-2004 à 19:02:43  profilanswer
 

Je travaille avec Oracle. Les durées que je devrai avoir sont 6000 (j'ai oublié un - : 6000+6000-6000=6000) et 3000
 
Voici la requete :
 
select network_operator_id,last_day(traffic_date),product_id,sum(duration) Registred,sum(unit_count) Declared
from daily_summary,posted_account_entry
where network_operator_id=FEEDER_CUST_CODE
and PRODUCT_ID=PROD_LINE
and PRODUCT_ID='IDTF'
and CALL_DATE >= '01/05/2003'
and CALL_DATE <= '31/05/2003'
and last_day(call_date)=last_day(traffic_date)
and NETWORK_OPERATOR_ID = 'GBBT'
group by network_operator_id,last_day(traffic_date),product_id
;
 
Résultat :  
 
NETWO LAST_DAY PROD  REGISTRED   DECLARED
----- -------- ---- ---------- ----------
GBBT  31/05/03 IDTF       6000       9000
 
Au lieu de  
 
NETWO LAST_DAY PROD  REGISTRED   DECLARED
----- -------- ---- ---------- ----------
GBBT  31/05/03 IDTF       6000       3000
 
Je vais essaier d'enlever les jointures.
 

n°698930
Beegee
Posté le 14-04-2004 à 11:00:00  profilanswer
 

tu peux essayer d'utiliser la requête que je t'ai mise au-dessus, avec les bons noms de champs, et me dire ce que ça donne ?
 
L'idée est de faire les sommes indépendamment pour les 2 tables, et ensuite, de joindre les 2 sommes par rapport aux clés ;)
 
Le plus simple pour écrire ce genre de requêtes est de les écrire séparément (tu écris d'abord la requête qui utilise seulement la table 1, puis celle de la table 2) et des les grouper ensuite. Surtout que tu utilises Oracle, qui permet l'utilisation de requêtes imbriquées (pas comme mySql, sur lequel je galère un peu car j'ai utilisé qu'Oracle jusqu'à maintenant ! :lol: )

n°699087
GOOOOO
Posté le 14-04-2004 à 13:27:38  profilanswer
 

En fait, la base de données est une bd Oracle, mais j'utilise BusinessObjects pour créer un rapport :pt1cable: . Donc, je vais voir si ta requête est faisable en BO ou sous Designer.
 
Sous SQL*+, un message me dit que le group by n'est pas à la bonne place!!! :sweat:

n°699540
GOOOOO
Posté le 14-04-2004 à 19:08:42  profilanswer
 

Bon, j'ai essayé ton truc :  
 
SELECT result1.network_operator_id,result1.month,result1.product_id, result1.durée1, result2.durée2  
  FROM (SELECT network_operator_id,last_day(call_date) as month, product_id, sum(duration) as durée1  
        FROM daily_summary  
        GROUP BY network_operator_id, last_day(call_date), product_id) result1,  
       (SELECT feeder_cust_code,last_day(traffic_date) as month, prod_line, sum(unit_count) as durée2  
        FROM posted_account_entry  
        GROUP BY feeder_cust_code,last_day(traffic_date) , prod_line) result2  
  WHERE result1.network_operator_id = result2.feeder_cust_code
  AND result1.month=result2.month
  AND result1.product_id= result2.prod_line
  AND result1.network_operator_id = 'GBBT'
  AND result1.product_id= 'IDTF';  
 
et ça marche admirablement :jap: merci énormément. Seulement voilà, je dois intégrer ça dans le Business Objects :pt1cable: !!!
 
BOn, j'essaie et on verra bien.

n°700871
GOOOOO
Posté le 16-04-2004 à 11:18:48  profilanswer
 

Salut.
 
Je trouve toujours pas de solution pour faire une telle requête avec BO. Comment je dois faire????
 
Heeeeeeeeeelp!!!

n°708985
GOOOOO
Posté le 26-04-2004 à 18:06:45  profilanswer
 

:pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:


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

  sommes multiple

 

Sujets relatifs
mail() to cc bcc multiple[MYSQL] UPDATE multiple sur une table [Résolu]
[vba] jointure multipleVerification formu JS sur un Select multiple
[html / php] pb avec formulaire multiple dans un meme page ?upload + choix multiple
[HTML]bouton radio multiple avec zone de texteselect multiple et value
regex: matching multiplePb avec un formulaire à sélection multiple
Plus de sujets relatifs à : sommes multiple


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