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 :

Syntaxe Update entre deux tables


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut Syntaxe Update entre deux tables
    bonjour,

    à votre avis quel est la meilleure syntaxe SQL pour mettre à jour un champ d'une table1 avec un champ d'une table2, les deux étant bien entendu lié par une clé.

    Merci beaucoup

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 68
    Points : 78
    Points
    78
    Par défaut
    peux-tu préciser ?
    Veux-tu dire :
    table1 (champ1, champ2)
    table2 (champ3, champ4)

    le but étant de mettre à jour table1.champ1 égal à table2.champ3 lorsque table1.champ2 est égal à table2.champ4

    ??

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    oui c'est absolument cela

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 68
    Points : 78
    Points
    78
    Par défaut
    Il y a ça qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    SQL> select * from table1;
     
    COL1  COL2
    ----- -----
    C     4
    B     1
    A     1
     
    SQL> select * from table2;
     
    COL3  COL4
    ----- -----
    C     c
    B     b
    A     a
     
    SQL> update table1 set col2 = (select col4 from table2 where table1.col1=table2.col3);
     
    3 rows updated.
     
    SQL> select * from table1;
     
    COL1  COL2
    ----- -----
    C     c
    B     b
    A     a
    Mais je ne sais pas ce que ça donne s'il n'y a pas de contrainte d'unicité sur les colonne col1 et col3.

    Sinon, si bcp de volumétrie, j'aurais fait un curseur.

  5. #5
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par xavi Voir le message
    Il y a ça qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    SQL> select * from table1;
     
    COL1  COL2
    ----- -----
    C     4
    B     1
    A     1
     
    SQL> select * from table2;
     
    COL3  COL4
    ----- -----
    C     c
    B     b
    A     a
     
    SQL> update table1 set col2 = (select col4 from table2 where table1.col1=table2.col3);
     
    3 rows updated.
     
    SQL> select * from table1;
     
    COL1  COL2
    ----- -----
    C     c
    B     b
    A     a
    Mais je ne sais pas ce que ça donne s'il n'y a pas de contrainte d'unicité sur les colonne col1 et col3.

    Sinon, si bcp de volumétrie, j'aurais fait un curseur.
    Il faut juste faire attention, dans ton exemple, que si COL1 existe et pas le COL3 alors COL2 sera updaté avec NULL

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    ok merci à tous les deux

    je penssais à la même syntaxe

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

Discussions similaires

  1. pl/sql curseur update entre deux tables
    Par Fiona08 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 27/11/2010, 02h14
  2. Réponses: 7
    Dernier message: 02/09/2010, 03h57
  3. Probleme d'update entre deux tables
    Par faudet78 dans le forum Requêtes
    Réponses: 0
    Dernier message: 22/03/2010, 16h41
  4. requête update entre deux tables
    Par evevev dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/03/2010, 20h21
  5. Réponses: 4
    Dernier message: 09/11/2007, 19h08

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