Aide requete oracle, sum sur 2 tables différentes

Aide requete oracle, sum sur 2 tables différentes - SQL/NoSQL - Programmation

Marsh Posté le 14-05-2007 à 11:11:38    

Bonjour à tous,

 

J'ai un petit problème voici la strucutre de mes deux tables

 

TABLE 1

 

champ_1_1 : Valeurs différentes possibles : A,B,C,D
champ_3_3 : Libelle alphabetique pouvant prendre diverses valeurs
et d'autres champs non neccessaires dans cette requete.

 

TABLE 2

 

champ_1_2 : Valeurs différentes possibles : A,B,C,D
champ_2_2 : Valeurs différentes possibles : E,F,G
champ_3_2 : Libelle alphabetique pouvant prendre diverses valeurs (les même que sur la table 1, certaines valeurs n'étant pas référencées dans la table 1 et inversement)

Je cherche à recupérer le nombre d'occurences des différentes valeurs possibles du champ 1 et du champ 2 groupées par champ_3, ceci sur les deux tables, en faisant ça en une requete:

 

Je recherche donc un resultat sous la forme suivante :

 

    A     B     C     D     E     F     G       CHAMP3
     12    1    34    45   54   7      0        BLABLA
     2    45     0      42  4    5     42       BLUBLU

 

Je l'ai déja fait pour uen table mais je ne parviens pas à trouver la syntaxe pour le faire sur les deux à la fois, comment faire ce group by sur le champ3 qui est 'commun' aux deux tables.

 
Code :
  1. select count(*) as PERS_RAPPR,
  2.      CHAMP3,
  3.      SUM(decode (CHAMP1, 'A', 1 , 'B', 0, 'C', 0, 'D', 0)) AS A,
  4.      SUM(decode (CHAMP1, 'B', 1 , 'A', 0, 'C', 0, 'D', 0)) AS B,
  5.      SUM(decode (CHAMP1, 'C', 1 , 'B', 0, 'A', 0, 'D', 0)) AS C,
  6.       ETC... DE MËME SUR CHAMP2
  7.  from TABLE1 group by CHAMP3;


Message édité par Alisteroid le 14-05-2007 à 16:07:24
Reply

Marsh Posté le 14-05-2007 à 11:11:38   

Reply

Marsh Posté le 14-05-2007 à 11:24:35    

union entre les deux tables, et ta solution par dessus le total.
 
select sum(...)
from
(
   select champ3, champ2, champ1, etc.
   from tbl1
   union
   select champ3, champ2, champ1, etc.
   from tbl2
) as tmp

Reply

Marsh Posté le 14-05-2007 à 11:36:09    

Je vais essayer ça, je te remercie, je vous tiens au courant :jap:

Reply

Marsh Posté le 14-05-2007 à 16:07:26    

J'ai un petit probleme ma table 1 , ne comporte pas le champ 2, et du coup mon union se fait sur deux tables ayant un nombre de colonnes différents. -> Erreur sql  
Comment faire en sorte que ça passe? une astuce?

Reply

Marsh Posté le 14-05-2007 à 16:32:17    

ben...
 
select champ1, ' ' champ2, champ3
from table1

Reply

Marsh Posté le 14-05-2007 à 17:48:06    

Merci pour ton aide magic buzz, le sql c'est vraiment pas trop mon truc, et mes 9 mois d'XP et le fait que j'ai jamais bossé sous oracle font que j'ai un peu du mal encore ...pour info voici donc ma fameuse requete :p

  

SELECT  DR, NOM_SIEGE as NOM,
      SUM(decode (CODE_VIG , 'VS', NB)) AS VS,
      SUM(decode (CODE_VIG , 'VG', NB)) AS VG,
      SUM(decode (CODE_VIG , 'VC', NB)) AS VC,
      SUM(decode (CODE_VIG , 'VV', NB)) AS VV,
      SUM(decode (CODE_VIG , 'VST', NB)) AS VST,
      SUM(decode (CODE_VIG , 'VGT', NB)) AS VGT,
      SUM(decode (CODE_VIG , 'VVT', NB)) AS VVT

 

    FROM siegeS,  
   
       (
      SELECT COUNT(*) as NB,
       RAPM_CODE_VIGI as CODE_VIG,
         LPAD(RAPM_".$this->filtres->niveau.",5,'0') as ".$this->filtres->niveau."
        from RAPPRO_PERS_MORALE GROUP BY RAPM_".$this->filtres->niveau.",RAPM_CODE_VIGI

 

       union all      

 

    SELECT COUNT(*),
         RAPM_CODE_VIGI_TIERS,
         LPAD(RAPM_".$this->filtres->niveau.",5,'0') as ".$this->filtres->niveau."
        from RAPPRO_PERS_MORALE GROUP BY RAPM_".$this->filtres->niveau.",RAPM_CODE_VIGI_TIERS

 

    union all      

 

    SELECT COUNT(*),
         VGPP_PART_VIGI,
         LPAD (VGPP_".$this->filtres->niveau.",5,'0') as ".$this->filtres->niveau."
       from vigilance GROUP BY VGPP_".$this->filtres->niveau.",VGPP_PART_VIGI ) WHERE DR=SIEGES.CODE_ENTITE GROUP BY DR,NOM_SIEGE "

 


Merci encore MagicBuzz, c'est encore toi qui me réponds, ça fait plaisir de trouver des personnes comme toi quand on galère un peu ;)


Message édité par Alisteroid le 14-05-2007 à 17:50:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed