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

DB2 Discussion :

Requête update et inner join


Sujet :

DB2

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut Requête update et inner join
    Bonsoir,

    J'ai une BD DB2 avec 2 tables :

    T1
    Nom : T1.jpg
Affichages : 75
Taille : 360,7 Ko


    et
    T2
    Nom : T2.jpg
Affichages : 66
Taille : 70,1 Ko

    Dans la table T1, il y'a une colonne matricule et une colonne DATAS qui contient toutes les données. Du coup, pour accéder aux données on est obligé d'utiliser la fonction substring et de jouer sur les positions.

    On me demande de mettre à jour, pour chaque matricule de T1, la zone substring(DATAS,1654,30) de T1 avec la valeur INCOD de T2.
    La jointure doit se faire entre substr(t1.DATAS,90,6) de T1 et VACOD de T2 pour ramener le libelle INCOD de T2 afin de mettre à jour la zone substring(DATAS,1654,30) de T1.

    Avec un update et un inner join, ca devrait marcher mais j'ai lorsque j'exécute dans DB2 ca ne fonctionne pas (le message est : [SQL0199] Le mot clé INNER est mal placé ...). Jai lu que inner join avec update n'est pas accepté. Du coup je galère pour trouver une solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update T1 inner join T2 on substr(t1.DATAS,90,6)=t2.VACOD from T1
    set t1.DATAS=concat(substring(DATAS,1,1653),concat(substr(t2.incod,1,30), substr(t1.DATAS,1685,1800)));
    Après avoir parcouru les forums il semble que je dois passer par des sous requêtes mais je n'y arrive pas.
    Pouvez vous m'assiter svp ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 308
    Points : 13 059
    Points
    13 059
    Par défaut
    Bonjour,
    Je ne connais pas DB2, mais dans SqlServeur la bonne syntaxe est :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    update t1
    set t1.colx = ''
    from LaTable as t1
    inner join LautreTable as t2
    on t1.id = t2.idt1
    where ...

    Tatayo.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    Justement, cela ne fonctionne avec DB2. Il me faut trouver un autre moyen.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 308
    Points : 13 059
    Points
    13 059
    Par défaut
    Alors avec une sous requête, d'après ce que j'ai trouvé:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    update LaTable as t1
    set LaColonne = 
    (
    select AutreColonne 
    from AutreTable as t2
    where t1.Col1 = t2.Colt1
    )
    where exists
    (
    select 1
    from AutreTable as t2
    where t1.Col1 = t2.Colt1
    )
    Tatayo.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup c'est bon

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

Discussions similaires

  1. Problème avec UPDATE et INNER JOIN
    Par korbn dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/05/2009, 21h52
  2. [MySQL] UPDATE et INNER JOIN
    Par korbn dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2009, 15h27
  3. probleme update et inner join
    Par makaphrodite dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/04/2009, 12h44
  4. UPDATE et INNER JOIN
    Par korbn dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2008, 05h28
  5. UPDATE avec INNER JOIN
    Par steelidol dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 04/03/2006, 00h56

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