Une aide svp en sql

tft_rezak Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
tft_rezak Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je debut avec le sql (oracle8)
Jai deux table table1 et table2
table1 contient les rubriques (periode,montant_mensuel,numero)
periode = janvier fevrier mars...
table2 contient elle les rubriques (annee , montant_annee,numero)
je voudrais faire resortir le total mensuel par annee et par numero de la table1
avec la table2

voici ma requete

select substr(t1.periode,1,4) ,sum(t1.montant_Mensuel) , sum(t2.montant_annee),t1.numero from table1 t1,table2 t2  
where t1.numero = t2.numero  
and substr(t1.periode,1,4) = t2.annee  
group by t1.numero,substr(t1.periode,1,4) 
  
table1                                                    table2                
periode  montant_mensuel numero             annee     monatnt_annee  numero  
201001   12000.00        151  (janvier)     2010      19000.00        151  
201002    4000.00        151  (fevrier      2010      16500.00        152  
201003    2000.00        151  (mars         2010      12000.00        177  
201004    1000.00        151  (avril  
201001   12000.00        152  (janvier  
201002    4500.00        152    (fevrier  
201005   12000.00        177    (mai   
201006    4752.36        177    (juin      


mais le resultat lui est faux
par exemple pour le numero 151 en 2010 au lieu de 19000.00 jai 76000.00
et verifier que le numero 177 y a une diffrence entre les mois et l'annee
svp aidez moi a le resoudre

merci

A voir également:

8 réponses

Defouille Messages postés 404 Statut Membre 54
 
Bonjour,

que veux tu faire exactement ? remplir la table2 à partir des infos de la table1 ?
Car dans ta requête je ne comprend pas bien ce que tu veux afficher.
0
tft_rezak Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

j'ai du mal formulé ma question voila pour la table1 elle contient le detail mensuel des montant versé par client.
exemple le client 151 doit pour l'annee 2010 une somme de 19000.00€ table2

et table1 elle contient le details mensuel des versement par mois (jan fev mar avr... )

et voila le resulat que je veux obtenir avec cette requete
select substr(t1.periode,1,4)as annee ,sum(t1.montant_Mensuel)as total_mensuel , sum(t2.montant_annee)as montant_annee  ,t1.numero as numero_client  from table1 t1,table2 t2  
where t1.numero = t2.numero  
and substr(t1.periode,1,4) = t2.annee  
group by t1.numero,substr(t1.periode,1,4) 

exemple 

annee      total_mensuel  montant_annee  numero_client
 2010       19000.00         19000.00            151        solde = 0 c'est ok
 2010       16752.36         12000.00            177        solde > 0 pas normale
 ...

 un autre cas peut se prensenter 
si 

annee  total_mensuel  montant_annee  numero_client
 1999   9000.00           19000.00            151    solde < 0 il doit encore 10000.00



salutation et merci pour votre aide
0
Defouille Messages postés 404 Statut Membre 54
 
Et bien j'ai une réponse que j'ai faite sous postgresql, donc il faudra surement l'adapter pour oracle, de plus je ne connais pas le type exact de tes champs dans ta base du coup il est possible que l'analyseur syntaxique te dise que les tests ne sont pas bons car les champs n'ont pas le même type, il faudra alors les caster dans le type correspondant.

Enfin voila une requête qui fonctionne chez moi :

SELECT t2.annee, t1.total_mensuel, t2.montant_annee, t2.numero
FROM table2 t2
INNER JOIN (
SELECT SUM(t3.montant_mensuel) as total_mensuel, id FROM (
	SELECT  SUBSTR(periode,1,4)||numero as id, montant_mensuel, SUBSTR(periode,1,4) as annee, numero
	FROM table1
) as t3 GROUP BY id) t1
ON t2.numero::text = SUBSTR(id,5,6)
AND t2.annee = SUBSTR(id,1,4)


Si tu as des questions n'hésite pas ^^
0
anonyme
 
select t1.numero,annee,montant_annee, sum(montant_mensuel)
from table1 t1,table2 t2
where t1.numero = t2.numero
group by t1.numero,annee,montant_annee

tout simplement !
0

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

Posez votre question
anonyme
 
select t1.numero,annee,montant_annee, sum(montant_mensuel)
from table1 t1,table2 t2
where t1.numero = t2.numero
group by t1.numero,annee,montant_annee

tout simplement !
0
anonyme
 
select t1.numero,annee,montant_annee, sum(montant_mensuel)
from table1 t1,table2 t2
where t1.numero = t2.numero
group by t1.numero,annee,montant_annee

tout simplement !
0
anonyme
 
select t1.numero,annee,montant_annee, sum(montant_mensuel)
from table1 t1,table2 t2
where t1.numero = t2.numero
group by t1.numero,annee,montant_annee

tout simplement !
0
tft_rezak Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour a tous et merci pour toute l'aide que vous m'apportez
pour la derniere requete elle marche bien j'ai les les soldes en plus ou en moins maintenat je suis confrenté a un autre probleme
c'est qu'il ya une rubrique de type date "journee"
et la table table2
             
              table2                
 annee     montant_annee      numero  journee
 2010        9000.00              151        20100102
 2010        3000.00              151        20100302
 2010        7000.00              151        20100602
 2010        4800.00              151        20100604 erreur de saisie
 2010       -4800.00              151       20100604 erreur de saisie 

2010      16500.00              152  
 2010      12000.00              177  


et le resultat de la requete uniquement pour le numero 151

annee      total_mensuel  montant_annee  numero_client

 2010       19000.00         9000.00            151 
 2010       19000.00         3000.00            151 
 2010       19000.00         7000.00            151 
...

J'aurai Voulu avoir comme resultat 

 2010       19000.00         19000.00            151 
quelque soit le nombre d'ecritures dans la table2
pour ceux qui en une seul ecriture dans la Table2 aucun souci
ça marche bien la requete

0