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

Oracle Discussion :

UPDATE TABLE ORACLE


Sujet :

Oracle

  1. #1
    Membre habitué Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Points : 140
    Points
    140
    Par défaut UPDATE TABLE ORACLE
    Salut

    je veux faire une mise à jour de table par rapport a une autre table

    exemple :

    TABLE A
    C1_____C2
    3501--- TOTO
    3502 ---TATA
    3503 ---TITI
    3504 ---TUTU

    TABLE B
    C1_____C2
    3501---Information Toto
    3502---Information Tata
    3503---Information Titi
    3504---Information Tutu

    je veux mettre a jour la colonne C2 de la table A par la colonne C2 de la table B quand la colonne C1 de la table A = la colonne C1 de la table B

    Thx

    [/b]
    La connaissance n'est rien sans celles des autres !!!

  2. #2
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    test@BROCANTE> select * from a;
     
            C1 C2
    ---------- --------------------
          3501 TOTO
          3502 TATA
          3503 TITI
          3504 TUTU
          3505 TETE
     
    test@BROCANTE> select * from b;
     
            C1 C2
    ---------- --------------------
          3501 Information Toto
          3502 Information Tata
          3503 Information Titi
          3504 Information Tutu
          3506 Information Tyty
     
    test@BROCANTE> update a
      2  set c2 = (select b.c2 from b
      3  where b.c1=a.c1)
      4  where exists ( select 'oui' from b
      5  where b.c1=a.c1);
     
    4 rows updated.
     
    test@BROCANTE> select * from a;
     
            C1 C2
    ---------- --------------------
          3501 Information Toto
          3502 Information Tata
          3503 Information Titi
          3504 Information Tutu
          3505 TETE

  3. #3
    Membre habitué Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Points : 140
    Points
    140
    Par défaut
    MERCI !!!!
    La connaissance n'est rien sans celles des autres !!!

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Merci de ne pas crier tout le temps (i.e. majuscules) : on n'est pas sourds !

    De plus, merci de penser aux balises [quote] quand vous citez quelque chose, et de cliquer sur résolu quand le problème est résolu.

    En outre, le forum n'est pas là pour faire le boulot à votre place ! ;-)

  5. #5
    Membre habitué Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Points : 140
    Points
    140
    Par défaut
    G un petit probleme voici le message d'erreur !

    The following error has occurred:

    ORA-01407: impossible de mettre à jour ("PNGDEV"."UNV_OBJECT"."OBJ_NAME") avec NULL

    pourtant dans ma TABLE B il n'y a pas de valeur nul !!!
    La connaissance n'est rien sans celles des autres !!!

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Alors peut-être que la condition b.c1=a.c1 n'est pas respectée au moins une fois (=> pour une valeur au moins de la colonne c1 de la table a, il n'y a pas d'équivalent dans la table b)
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  7. #7
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Merci de penser aux balises [ quote ] quand vous citez quelque chose (un message d'erreur par exemple) (bis)

    Sinon, si il dit que la colonne est nulle, c'est le cas !
    Si vous êtes en 10g Release 2, vous pouvez insérer les lignes en erreurs dans une table d'évènement.
    [edit]
    http://www.oracle.com/technology/pub...rt1.html#error
    [/edit]

  8. #8
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    La requête d'update peut donner une erreur s'il y a plusieurs lignes correspondantes pour l'update, mais la valeur null quand il y en a pas, là je ne vois pas...

    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
    test@BROCANTE> select * from b;
     
            C1 C2
    ---------- --------------------
          3501 Information Toto
          3502 Information Tata
          3503 Information Titi
          3504 Information Tutu
          3506 Information Tyty
     
    test@BROCANTE> insert into b values (3501, 'Information 2');
     
    1 row created.
     
    test@BROCANTE> update a
       2  set c2 = (select b.c2 from b
       3  where b.c1=a.c1)
       4  where exists ( select 'oui' from b
       5  where b.c1=a.c1);
    set c2 = (select b.c2 from b
              *
    ERROR at line 2:
    ORA-01427: single-row subquery returns more than one row
    La requête fonctionne de la façon suivante :

    On met à jour la colonne c2 de la table A si il existe une ligne dans la table B pour le même identifiant c1. Seules les lignes qui ont une corrélation avec la table B seront mises à jour.

    La valeur de la colonne c2 mise à jour est celle de la colonne c2 de la table B qui correspond au même id c1.

    Sans la where clause, il y aurait eu des mises à jours nulles (on aurait pas trouver de correspondance dans la table B, donc on aurait mis null). Avec la where clause, je ne vois qu'une valeur nulle dans la table B pour l'id en question qui puisse donner ce résultat...

    On peut toujours essayer de voir cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select a.c1, a.c2, b.c2
    from a, b
    where a.c1 = b.c1
    and b.c2 is null

  9. #9
    Membre habitué Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Points : 140
    Points
    140
    Par défaut
    OK g bien éxécuter ce que tu m'as dit
    TABLE_1 = UNV_OBJECT
    C1 = OBJECT_ID
    TABLE_2 = UNV_LIB_PAIE
    C1 = OBJECT_ID


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select A.OBJECT_ID, B.LIBELLE from UNV_OBJECT A, UNV_LIB_PAIE B 
    where A.OBJECT_ID= B.OBJECT_ID and B.LIBELLE is null
    resultat : Aucune Ligne
    Sinon effectivement les OBJECT_ID des la table 1 ne sont pas tous dans la table 2
    La connaissance n'est rien sans celles des autres !!!

  10. #10
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tu peux poster ton update qui plante ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  11. #11
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Si vous utilisiez l'error logging clause, vous auriez plus d'informations à mon avis ! ;-)

Discussions similaires

  1. [9.3] Foreign table Oracle : delete - update
    Par denis.henkens dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 07/11/2014, 10h20
  2. [DataSet] Update une table oracle dynamiquement
    Par Amuny dans le forum VB.NET
    Réponses: 6
    Dernier message: 10/05/2011, 18h24
  3. [AC-2003] problème update de table VBA vers table oracle
    Par valmelissa dans le forum VBA Access
    Réponses: 10
    Dernier message: 29/10/2009, 12h39
  4. Update sur une Table Oracle
    Par faressam dans le forum VBScript
    Réponses: 3
    Dernier message: 18/09/2008, 10h01
  5. UPDATE : table à partir d'une autre
    Par Laura dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/10/2003, 21h34

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