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

Langage SQL Discussion :

UPDATE avec SELECT sur la même table


Sujet :

Langage SQL

  1. #1
    Invité
    Invité(e)
    Par défaut UPDATE avec SELECT sur la même table
    Bonjour,

    j'ai un petit problème d'update d'une table, l'expliquer n'étant pas évident l'ai pris un extrait de la table.

    Dans ce cas je souhaiterais mettre à jour le champs TSK_LINKEDTASKID avec la valeur du TSK_TASKID ou la valeur du OLD_TSK_TASKID est égale à OLD_TSK_LINKEDTSKID (de la ligne à mettre à jour).
    Dans l'exemple suivant je veux mettre à jour TSK_LINKEDTASKID de la première ligne avec la valeur de TSK_TASKID de la seconde ligne car la valeur OLD_TSK_LINKEDTASKID de la première ligne est égale à la valeur OLD_TSK_TASKID de la seconde ligne. C'est assez clair?

    Les couple tsk_taskid, old_tsk_taskid sont unique (à une unique valeur de tsk_taskid une autre unique valeur de old_tsk_taskid est associée).

    J'ai essayé diverse méthode mais aucune n'est bonne. Des idées?
    Dernière modification par Invité ; 06/12/2007 à 17h27.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 805
    Points
    30 805
    Par défaut
    Pourriez-vous nous présenter une ébauche de la requête que vous tentez de mettre au point.
    Cela sera plus facile pour vous aider à la faire évoluer.
    En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Règles du forum Langage SQL à lire par tous
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je suis donc sous SQL server et j'ai essayé les choses suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE igkimp_task_ee
    SET tsk_linkedtaskid=(SELECT tsk_taskid FROM igkimp_task_ee AS inp
    WHERE old_tsk_linkedtaskid=inp.old_tsk_taskid)
    Il est indiqué que toutes lignes sont mises-à-jour mais au final je constate que la colonne TSK_LINKEDTASKID est toujours NULL.

    J'ai également essayé de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE igkimp_task_ee AS outp
    SET tsk_linkedtaskid=(SELECT tsk_taskid FROM igkimp_task_ee AS inp
    WHERE outp.old_tsk_linkedtaskid=inp.old_tsk_taskid)
    mais là ça ne marche pas du tout (normal on ne peut pas faire de "UPDATE x AS y").

    Et enfin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE igkimp_task_ee
    SET igkimp_task_ee.tsk_linkedtaskid=t2.tsk_taskid
    FROM igkimp_task_ee t1,igkimp_task_ee t2
    WHERE t1.old_tsk_linkedtaskid=t2.old_tsk_taskid
    ne marche pas avec le message d'erreur suivant: "The table 'igkimp_task_ee' is ambiguous."

  4. #4
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    Allez je tente.
    Essai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE igkimp_task_ee
    SET tsk_linkedtaskid = tsk_taskid
    where old_tsk_linkedtaskid = old_tsk_taskid
    Évènements dans le 06?
    www.sortir06.com

  5. #5
    Invité
    Invité(e)
    Par défaut
    Non, ça ferait un UPDATE sur les lignes où old_tsk_linkedtaskid = old_tsk_taskid (or ce n'est pas possible).

  6. #6
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    C'est ce que je voulais... old_tsk_linkedtaskid = old_tsk_taskid
    Alors je n'ai pas compris le probleme de Paclya.
    Évènements dans le 06?
    www.sortir06.com

  7. #7
    Invité
    Invité(e)
    Par défaut
    En effet ma description initiale n'était pas claire, j'ai explique par l'exemple ce que je souhaite faire, afin que ce soit plsu clair.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Si la réponse intéresse quelqu'un: il faut faire un self-JOIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE
        NewTask
    SET
        NewTask.TSK_LINKEDTASKID = OldTask.TSK_TASKID
    FROM
        igkimp_task_ee AS NewTask JOIN
        igkimp_task_ee AS OldTask ON NewTask.OLD_TSK_LINKEDTASKID = OldTask.OLD_TSK_TASKID;

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

Discussions similaires

  1. [MySQL] SELECT * avec jointure sur une même table
    Par Oprichnik dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/03/2011, 13h17
  2. Requête update avec un select sur la même table
    Par sheira dans le forum Requêtes
    Réponses: 6
    Dernier message: 15/09/2010, 16h09
  3. Update avec un select sur la même table
    Par Xunil dans le forum Administration
    Réponses: 5
    Dernier message: 09/04/2007, 16h40
  4. Requêtes avec liaison sur la même table
    Par jessenco dans le forum Requêtes
    Réponses: 10
    Dernier message: 15/01/2007, 01h10
  5. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/03/2005, 11h20

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