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 :

Mettre a jour plusieurs lignes d'une table


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut [RESOLU]Mettre a jour plusieurs lignes d'une table
    Bonjour,

    Je rencontre une erreur lorsque j'essaie de mettre a jour plusieurs lignes d'une table.

    J'ai les deux tables suivantes:

    tble_Work --> WP,DESCRIP,PROGRAM
    tble_Code --> CODE,CODEDESC,BREAKFILE

    Le WP (Work package) de la table tble_Work correspond au CODE de la table tble_Code, ce qui me permet de lie les 2 tables:

    Mon probleme est que dans la table tble_Work, le champ DESCRIP est vide pour certains WP. Alors que dans la table tble_Code j'ai bien une description pour tous les enregistrements du champ CODE (qui correspondent a mes WP de la table tble_work)

    Je souhaiterais donc copier le contenu du champ CODEDESC dans le champ DESCRIP de ma table tble_work pour tous les WP/CODE.

    J'utilise la requete suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE tble_Work
    SET DESCRIP = (SELECT CODEDESC 
    	       FROM tble_Code 
    	       WHERE CODE IN (SELECT tble_Work.WP FROM tble_Work 
    			     WHERE tble_Work.PROGRAM='62864074' 
    			     and tble_Code.BREAKFILE = '4074WPL'))
    Mais j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Server: Msg 512, Level 16, State 1, Line 1
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    The statement has been terminated.
    En effet ma sous requete me retourne plusieurs valeurs puisque toutes mes descriptions sont differentes pour chaque WP/CODE...

    J'ai l'impression que cela n'est pas supporte par le UPDATE.

    Est-ce que vous auriez une idee de la solution?
    Par avance, Merci!

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    S'il n'y a bien qu'un seul enregistrement dans tble_code pour chaque enregistrement de tbl_work (sinon il faut choisir l'un d'entre eux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE tble_Work 
    SET DESCRIP = (SELECT CODEDESC 
                   FROM tble_Code 
                   WHERE CODE = WP)
    WHERE tble_Work.PROGRAM   = '62864074' 
      AND tble_Code.BREAKFILE = '4074WPL'
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Ba en fait cela me donne l'essreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The column prefix 'tble_Code' does not match with a table name or alias name used in the query.

    Si je retire la derniere condition et que j'execute le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE tble_Work 
    SET DESCRIP = (SELECT CODEDESC 
                   FROM tble_Code 
                   WHERE tble_Code.CODE = tble_Work.WP) 
    WHERE tble_Work.PROGRAM   = '62864074'
    j'ai exactement la meme erreur qu'au debut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Server: Msg 512, Level 16, State 1, Line 1
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    The statement has been terminated.
    Please HELP !!!

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The column prefix 'tble_Code' does not match with a table name or alias name used in the query.
    Effectivement mon copier-coller était un peu rapide.

    Eventuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE tble_Work 
    SET DESCRIP = (SELECT CODEDESC 
                   FROM tble_Code 
                   WHERE tble_Code.CODE = tble_Work.WP
                   AND tble_Code.BREAKFILE = '4074WPL') 
    WHERE tble_Work.PROGRAM   = '62864074'
    Mais le point principal est :
    Citation Envoyé par Médiat
    S'il n'y a bien qu'un seul enregistrement dans tble_code pour chaque enregistrement de tbl_work (sinon il faut choisir l'un d'entre eux)
    Comme il semble y en avoir plusieurs, il faut que tu donnes un moyen d'en sélectionner un.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Ba finalement je suis passe par le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE tble_Work
    SET tble_Work.DESCRIP = tble_Code.CODEDESC
    FROM tble_Work, tble_Code
    WHERE tble_Code.CODE = CAWP.WP
    AND tble_Work.PROGRAM = '62864074'
    AND tble_Code.BREAKFILE = '4074WPL'
    AND tble_Work.DESCRIP =''
    Et cela me copie bien toutes les descriptions des Code de la table tble_Code dans le champ DESCRIP de la table tble_Work pour chaque Code/WP respectif. 94 lignes mises a jour.

    Merci pour ton aide!

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

Discussions similaires

  1. [MySQL] mettre a jour les lignes d'une table sur place
    Par diengkals dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/07/2013, 14h44
  2. Mettre à jour plusieurs enregistrements d'une table
    Par eric41 dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2008, 16h33
  3. Mettre à jour plusieurs lignes d'une table
    Par beegees dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2008, 18h09
  4. Réponses: 7
    Dernier message: 12/07/2006, 17h34
  5. Procédure stockée - Retourner plusieurs ligne d'une table
    Par ronando dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/11/2005, 13h19

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