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

 MySQL Discussion :

Passer les valeurs d'une colonne d'une table à une autre


Sujet :

MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 223
    Points : 68
    Points
    68
    Par défaut Passer les valeurs d'une colonne d'une table à une autre
    Bonjour,

    Je tente de mettre à jour une colonne dans phpmyadmin, mais ma requête n'affecte aucun enregistrement...
    Je ne comprends pas où est l'erreur. Si vous pouviez m'aider...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update cp, cpNEW
    set cp.son_titre = cpNEW.son_titre
    where cp.ID_cp = cpNEW.ID_cp
    La table à mettre à jour est cp.
    La table cpNEW est identique à la table cp, à l'exception de la colonne son_titre qui a les bonnes données que je cherche à récupérer.

    Elle est où l'erreur ?

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 585
    Points
    31 585
    Billets dans le blog
    16
    Par défaut
    Dans la 1ere ligne de votre instruction UPDATE vous ne devez nommer que la table à mettre à jour.

    =>

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE cp
    SET son_titre = (SELECT son_titre 
                     FROM   cpNew
    		 WHERE  idcp = cp.idcp) ;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 223
    Points : 68
    Points
    68
    Par défaut
    Merci infiniment François ! Je me voyais déjà remettre tous les titres un par un...
    Bonne journée à vous !

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Votre requete initiale aurait dû fonctionner.

    Quelle est votre version de MySQL ?

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 585
    Points
    31 585
    Billets dans le blog
    16
    Par défaut
    La requête initiale est-elle bien conforme à la norme SQL ?

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour fsmrel,

    Je comptais sur vous pour répondre à la question...

    Il me semble que la norme spécifie que la cible d'une commande UPDATE peut être une table dérivée, au même titre qu'une vue...

    SQLPro pourra peut-être nous éclairer sur ce point.

    ---
    Dans le cas présent, il faut qu'une ligne de cp correspondent tout au plus à une ligne de cpNEW, ce qui m'a semblé être le cas.

    Cela dit, puisqu'il est question de norme, on peut au moins utiliser la jointure normalisée (dont la syntaxe est aussi je crois acceptée par MySQL):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    update cp
    INNER JOIN  cpNEW
        ON cp.ID_cp = cpNEW.ID_cp
    set cp.son_titre = cpNEW.son_titre
    Tout cela n'explique pas le comportement de la requete initiale de evevev, dont la syntaxe a été acceptée par MySQL mais qui apparemment n'a eu aucun effet.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 888
    Points : 53 122
    Points
    53 122
    Billets dans le blog
    6
    Par défaut
    Un alias non, une vue oui.

    A +

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/01/2013, 11h03
  2. [XL-2003] Trier une colonne de moyenne, rattachée à une colonne de noms
    Par floctc dans le forum Excel
    Réponses: 3
    Dernier message: 11/03/2011, 09h57
  3. Réponses: 8
    Dernier message: 06/05/2008, 11h52
  4. Réponses: 2
    Dernier message: 06/04/2007, 10h26
  5. Réponses: 5
    Dernier message: 05/04/2007, 21h41

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