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] Màj record en fct de valeurs venant d'une autre table


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Points : 56
    Points
    56
    Par défaut [Requête] Màj record en fct de valeurs venant d'une autre table
    Bonjour à tous,

    mon problème est simple ... mais la solution l'est un peu moins je pense

    J'ai du mal à composer ma requête SQL pour effectuer une tâche. J'ai 2 tables, tab_a et tab_b. Ces tables ont un champ ID en commun. Mon but est de mettre à jour (UPDATE) certains champs (nommons les upd_b_i) de la table B en calculant des valeurs à partir de certaines colonnes (nommons les src_a_j) de la table A.

    Cela marche en pl/sql si je fais ceci (schématiquement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE
      CURSOR CUR IS
        SELECT ID, et toutes les colonnes src_a_j
        FROM A ;
      Pour tout record du cursor 
        UPDATE B set (upd_b_i) = fct(src_a_j)
        WHERE ID_A = ID_B 
      Fin pour
    Y a-t-il moyen d'effectuer cette même opération mais sans passer par du PL ?

    D'avance, merci.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE B SET (upd_b_1,upd_b_2,...,upd_b_i) = (SELECT upd_a_1,upd_a_2,...,upd_a_i FROM A
        WHERE ID_A = ID_B )
    Evidemment, il faut une relation 1-1 entre A et B.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Points : 56
    Points
    56
    Par défaut
    J'avais essayé cela sans succès, avant de m'apercevoir à l'instant la présence de doublons dans mes tables ... GGrrrr !

    Ca marche maintenant !

    : )

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    J'aurai rajouté un where exists qui est salvateur sur de grosses volumétries :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE B
    SET (upd_b_1,upd_b_2,...,upd_b_i) =
        (SELECT upd_a_1,upd_a_2,...,upd_a_i
         FROM A WHERE A.ID = B.ID)
    WHERE EXISTS (select null from A
                  where A.ID = B.ID)

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

Discussions similaires

  1. Impossible d'afficher une valeur existe dans une autre table
    Par mcharmat dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/02/2013, 06h38
  2. Réponses: 2
    Dernier message: 13/08/2011, 11h24
  3. mapping: valeur issu d'une autre table
    Par gojira dans le forum Hibernate
    Réponses: 5
    Dernier message: 25/11/2009, 16h09
  4. "insert into" de valeurs provenant d'une autre table
    Par jgfa9 dans le forum Requêtes
    Réponses: 5
    Dernier message: 31/01/2008, 09h44
  5. Réponses: 7
    Dernier message: 17/10/2006, 16h32

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