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

8 réponses

  1. 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
  2. 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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. 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
  9. 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