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

Requêtes MySQL Discussion :

UPDATE et concaténation


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut UPDATE et concaténation
    Bonjour à tous,

    Je souhaite modifier le nom (varchar) de chaque enregistrement.
    Apparemment la requête suivante ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `t_test` SET t_test.nom = "prefixe" + t_test.nom
    car tous les noms deviennent "0"

    Quelle est la bonne syntaxe SVP ?
    Merci

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Bonjour,

    Sous MySQL, la concaténation se fait avec la fonction CONCAT(chaine1, chaine2,...)

    ced

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    parfait ! merci cedric.
    aussi, j'aurais une autre question en rapport avec CONCAT

    Comment concaténer 2 champs provenant chacun d'une table différente ?

    ex :
    t_groupe (id, nom)
    t_etablissement (id, nom, id_groupe)
    Un établissement appartient a 0 ou 1 groupe.

    J'aimerais concaténer les 2 noms, faire un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `t_etablissement` SET nom = CONCAT(t_groupe.nom, " - ", t_etablissement.nom);
    Encore un p'tit coup de pouce SVP...

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    essaie quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE t_etablissement 
    JOIN t_groupe on t_etablissement.id = t_groupe.id
    SET t_etablissement.nom = CONCAT(t_groupe.nom, " - ", t_etablissement.nom);

  5. #5
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Un GRAND merci à vous 2 !

    une p'tite erreur s'était glissée avec la clé étrangère...
    UPDATE t_etablissement
    JOIN t_groupe ON t_etablissement.id_groupe = t_groupe.id
    SET t_etablissement.nom = CONCAT(t_groupe.nom, " - ", t_etablissement.nom);
    @+

  6. #6
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Curieux de faire ça, le modèle initial, en formes normales, me semble plus judicieux.
    Pourquoi redonder cette information dans deux colonnes de la table ?

  7. #7
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    c'est pour un trigger BEFORE DELETE sur les enregistrements dans t_groupe et ainsi avoir une traçabilité de l'établissement... c'est juste pour le fun !
    Pourquoi c'est pas bien ?

  8. #8
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par Tchupacabra Voir le message
    Pourquoi c'est pas bien ?
    Je ne suis pas manichéen, c'est juste qu'outre qu'on n'enregistre pas le résultat d'un calcul entre colonnes, on ne redonde pas l'information entre les colonnes d'une table.
    Supposons, (c'est peut être bête comme supposition) qu'un établissement change de groupe, il faudra penser à modifier la colonne t_etablissement.nom et pas seulement t_etablissement.id_groupe et là tu seras mal parce que tu ne disposeras plus du nom de l'établissement seul.
    Le prix à payer pour s'affranchir des formes normales est souvent lourd en temps passer à des tarabistouilles diverses.

  9. #9
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Supposons, (c'est peut être bête comme supposition) qu'un établissement change de groupe
    j'avais pas pensé > changement de stratégie...
    bon bah au moins j'ai découvert CONCAT()

    @+

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

Discussions similaires

  1. Update avec concaténation
    Par amnay dans le forum Débuter
    Réponses: 3
    Dernier message: 24/08/2012, 12h41
  2. UPDATE et concaténation en sqlite
    Par _FaFa_ dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/10/2010, 22h20
  3. Update et concaténation
    Par bkina dans le forum SQL
    Réponses: 1
    Dernier message: 06/05/2008, 14h32
  4. Update avec concaténation de champs
    Par hari37 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2007, 21h45
  5. problème d'update avec concaténation
    Par Invité dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/11/2005, 17h55

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