IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Requête + inner join+ update


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    MOE
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : MOE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Par défaut Requête + inner join+ update
    j 'ai une requête en access :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE T_AxeFH_RPC
    INNER JOIN (COORD_XY_G2R INNER JOIN TVal_DO_Region ON COORD_XY_G2R.nodep = TVal_DO_Region.Departement) 
    ON T_AxeFH_RPC.Site_B = COORD_XY_G2R.nosite 
    SET 
    T_AxeFH_RPC.DO = [TVal_DO_Region]![DO],
     T_AxeFH_RPC.Région = [TVal_DO_Region]![Région];
    je viens de la changer en oracle de cette façon, mais tjs ca ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    UPDATE T_AxeFH_RPC  ( SELECT reg.DO as do  , reg.Region as region
              FROM T_AxeFH_RPC T_RPC
              INNER JOIN (COORD_XY_G2R coord INNER JOIN (TVal_DO_Region reg) on coord.nodep = reg.Departement ) 
              ON T_RPC.Site_B = coord.nosite
              )
    set
    T_AxeFH_RPC.DO = DO,
    T_AxeFH_RPC.Region =  Region;
    Merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Data Ingenieur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Data Ingenieur
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Par défaut
    Bonjour,

    Je pense que ceci devrait marcher si le block

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * 
                from COORD_XY_G2R coord
              inner join TVAL_DO_REGION REG on COORD.NODEP = REG.DEPARTEMENT 
              where T_RPC.Site_B = coord.nosite
    ne ramène qu'une seul ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    UPDATE T_AxeFH_RPC T_RPC
    SET
    T_RPC.DO =  ( select REG.DO  
                from COORD_XY_G2R coord
              inner join TVAL_DO_REGION REG on COORD.NODEP = REG.DEPARTEMENT 
              where T_RPC.Site_B = coord.nosite
              ),
    T_RPC.REGION =  ( select REG.REGION  
                from COORD_XY_G2R coord
              inner join TVAL_DO_REGION REG on COORD.NODEP = REG.DEPARTEMENT 
              where T_RPC.Site_B = coord.nosite
              )

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Oula vous ne faites pas la même chose là.

    Attila ta requete est même dangereuse, selon la relation entre ces tables on risque de se retrouver avec plein de null dans T_AxeFH_RPC !!


    Sinon pour répondre à la question initiale, pour les updates :
    http://lnavarro.developpez.com/oracle/updatemerge/


    edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    update (
    	SELECT T_RPC.do as rpc_do, reg.DO AS do  , T_RPC.region as rpc_reg, reg.Region AS region
    	FROM T_AxeFH_RPC T_RPC
    	INNER JOIN COORD_XY_G2R coord ON T_RPC.Site_B = coord.nosite
    	INNER JOIN TVal_DO_Region reg ON coord.nodep = reg.Departement 
    	)
    set rpc_do = do, rpc_reg = region;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    merge into T_AxeFH_RPC a
    using (
    	select coord.nosite, reg.DO, reg.Region; 
    	from COORD_XY_G2R coord
    	INNER JOIN TVal_DO_Region reg ON coord.nodep = reg.Departement
    	) b
    on (a.Site_B = b.nosite)
    when matched then update set a.do = b.do, a.region = b.region;

  4. #4
    Membre confirmé
    Homme Profil pro
    Data Ingenieur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Data Ingenieur
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Par défaut
    Oupsss en effet je n'ai pas pensé au valeur Null possible désolé.

  5. #5
    Membre confirmé
    Profil pro
    MOE
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : MOE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Par défaut
    Merci ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête INNER JOIN ?
    Par Souri84 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/05/2010, 15h39
  2. Problème requête INNER JOIN
    Par punisher999 dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/12/2009, 09h51
  3. requête INNER JOIN
    Par Jasmine80 dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/03/2009, 11h00
  4. pb avec Group by et INNER JOIN/UPDATE TABLE
    Par Larentia dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/01/2009, 20h05
  5. Réponses: 6
    Dernier message: 26/09/2008, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo