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 :

comment changer simultanément un champs de plusieurs lignes [MySQL-5.6]


Sujet :

MySQL

  1. #1
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut comment changer simultanément un champs de plusieurs lignes
    Bonsoir. Je débute en Mysql et j'ai un soucis.
    J'ai une table "Employe" de 10 lignes où j'ai ajouté un champs "salaire"
    pour attribuer un salaire de 1500 à l'employé ayant l' id_Employe =1, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update Employe set salaire=15000 where id_Employe=1
    Je ne sais pas comment faire pour faire les 10 à la fois (les salaires ne sont pas égaux).
    merci

  2. #2
    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
    Par défaut
    Bonjour,

    Une solution serait celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UPDATE Employe 
        SET salaire = CASE id_Employe
            WHEN 1 THEN 1500
            WHEN 2 THEN 1800
            ...
            WHEN 10 THEN 12000
        END

  3. #3
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Bonjour.
    Merci pour la réponse, mais il y a problème avec votre code. il remet à zéro les champs que je ne veux pas changer

  4. #4
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Quel est la requête précise que vous avez utiliser pour affirmer que
    il remet à zéro les champs que je ne veux pas changer
    ?

    Car a priori, la requete de aieeeuuuuu ne modifie que la colonne Salaire.
    Pierre

  5. #5
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Bonjour.
    je me suis peut être mal exprimé.
    Voilà le problème du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UPDATE Employe 
        SET salaire = CASE id_Employe
            WHEN 3 THEN 1500
            WHEN 4 THEN 1800
            WHEN 5 THEN 1800
            WHEN 6 THEN 12000
        END
    ce code donne bien le bon salaire au bon employé.Mais remet à zéro les salaires des employés dont id_Employe=1,2,7,8,9 et10 (càd tous id_Employe qui ne sont pas dans le CASE)
    Merci

  6. #6
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 871
    Par défaut
    Salut stacoma.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     UPDATE Employe 
    SET salaire = CASE id_Employe
            WHEN 3 THEN 1500
            WHEN 4 THEN 1800
            WHEN 5 THEN 1800
            WHEN 6 THEN 12000
        END
    where id_Employe in (3,4,5,6);
    @+

  7. #7
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Merci Artemus24
    avec ce code tout va bien

  8. #8
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Bonsoir.
    si je veux faire des changements dans le champs email:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     UPDATE Employe 
    SET email= CASE id_Employe
           when 1 then 'Said@yahoo.fr'
           when 2 then 'Kamal@google.com'
           when 3 then 'Rachid@yahoo.com'
           when 4 then 'Samir@google.com'
           when 5 then 'Nada@hotmal.com'
        END
    where id_Employe in (1,2,3,4,5);
    Ce code ne marche pas. Est ce que ce code n’accepte que les chiffres
    Merci

  9. #9
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonsoir

    Non, on peut faire des updates avec tout caractères.

    Votre dernier code signifie :
    Pour les employés dont les id sont inclus dans la liste (1,2,3,4,5) mettre à jour la colonne "Employé" avec les indications suivantes :
    - pour l'id employé 1, valeur "'Said@yahoo.fr'";
    - pour l'id employé 2, valeur 'Kamal@google.com'
    ...

    Or je pense que vous voulez mettre à jour la colonne email. Il faut donc l'indiquer dans la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     UPDATE colonne_email 
    SET email= CASE id_Employe
           when 1 then 'Said@yahoo.fr'
           when 2 then 'Kamal@google.com'
           when 3 then 'Rachid@yahoo.com'
           when 4 then 'Samir@google.com'
           when 5 then 'Nada@hotmal.com'
        END
    where id_Employe in (1,2,3,4,5);
    pierre

  10. #10
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 871
    Par défaut
    Salut à tous.

    @ Stracoma : je ne voie rien de particulier dans ta requête de mise à jour.
    Il nous faudrait le descriptif de ta table afin de comprendre ce qui ne va pas.

    @ pier.antoine : la syntaxe de l'update est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE [LOW_PRIORITY] [IGNORE] table_reference
        SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    il faut mettre le nom de la table juste après le mot clef "UPDATE".

    Citation Envoyé par pier.antoine
    Votre dernier code signifie :
    Pour les employés dont les id sont inclus dans la liste (1,2,3,4,5) mettre à jour la colonne "Employé" avec les indications suivantes :
    - pour l'id employé 1, valeur "'Said@yahoo.fr'";
    - pour l'id employé 2, valeur 'Kamal@google.com'
    ...
    Tu as dû sauter une étape. Je reprends ta formulation :

    Votre dernier code signifie :
    Pour les employés dont les id sont inclus dans la liste (1,2,3,4,5) mettre à jour la colonne "Email" avec les indications suivantes :
    - pour l'id employé 1, valeur 'Said@yahoo.fr'
    - pour l'id employé 2, valeur 'Kamal@google.com'
    ...

    @+

  11. #11
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Bonjour à tous
    Voilà ma table:
    Nom : table.PNG
Affichages : 139
Taille : 67,7 Ko
    avec le code de pier.antoine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     UPDATE email 
    SET email= CASE id_Employe
           when 1 then 'salarie1@yahoo.fr'
           when 2 then 'salarie2@yahoo.fr'
           when 3 then 'salarie3@yahoo.fr'
           when 4 then 'salarie4@yahoo.fr'
           when 5 then 'salarie5@yahoo.fr'
        END
    where id_Employe in (1,2,3,4,5);
    il génère l'erreur suivante: ''la table email n'existe pas''
    Je crois qu'il faut mettre le nom de la table devant update comme le suggère Artemus24.
    je vais essayer et donnerai suite

  12. #12
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 871
    Par défaut
    Salut stracoma.

    Ce que tu nous donnes, c'est le vidage du contenu de ta table et non la structure de ta table.

    Le code de pier.antoine est faux : "UPDATE email".
    Le nom de ta table n'est pas "email", mais bien "Employe", c'est cela ?
    Ce que tu avais mis était correcte.

    Quel est le message d'anomalie que tu obtiens en exécutant ta requête du "Hier, 18h49" ?

    Tu as mis "nissance" et non "naissance". Ton erreur ne serait-il pas d'origine orthographique ?
    Sinon, je ne voie rien de particulier. J'ai même testé la syntaxe et elle est correcte.

    @+

  13. #13
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Salut.
    C'est bizarre, j'ai réessayé le même code qui ne marchait pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     UPDATE Employe 
    SET email= CASE id_Employe
           when 1 then 'Said@yahoo.fr'
           when 2 then 'Kamal@google.com'
           when 3 then 'Rachid@yahoo.com'
           when 4 then 'Samir@google.com'
           when 5 then 'Nada@hotmal.com'
        END
    where id_Employe in (1,2,3,4,5);
    cette fois ça marche
    Merci à vous

  14. #14
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 871
    Par défaut
    Salut stacoma.

    As-tu pu installer la version mysql 5.6.25 ?

    @+

  15. #15
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Salut Artemus 24
    Voilà ma petite histoire.
    Je suis allé dans votre site. j'ai téléchargé le fichier indiqué. Lors de l'installation l'OS me dit que mysql 5.6.25 est déjà installé.
    Il a été installé avec Wamp que j'avais installé avant.
    Mais j'ai un soucis avec mysql en mode console. Je compte donc relancer le sujet dans le forum
    Merci beaucoup

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

Discussions similaires

  1. La meme valeur dans un champ sur plusieurs lignes
    Par JeanduB dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2008, 14h52
  2. [SSRS] cangrow -- champ sur plusieurs lignes
    Par marie253 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2007, 08h27
  3. Réponses: 12
    Dernier message: 25/09/2007, 17h22
  4. Concaténer les champs de plusieurs lignes en un seul
    Par gvdmoort dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 07/09/2007, 12h01
  5. comment savoir si on a selectionne plusieurs lignes? LISTBOX
    Par nath-0-0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2006, 14h23

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