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 :

Ma chaine SQL ne met à jour qu'une seule cellule de mon tableau


Sujet :

Langage SQL

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Ma chaine SQL ne met à jour qu'une seule cellule de mon tableau
    Bonjour tout le monde,

    Je voudrais mettre à jour deux enregistrements différents de ma base de données.

    Quand j'écris cette chaine SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
     UPDATE etudiants SET Matricule_Et = '012345',
    Nom_Et = 'WILLIS',
    Prenom_Et = 'Bruce',
    Date_de_naissance_Et = '0000-00-00',
    Email_Et = 'Bruce.Willis@gmail.com',
    Photo_Et = 'photo225c',
    Matricule_Et = '123456',
    Nom_Et = 'MOORE',
    Prenom_Et = 'Demy',
    Date_de_naissance_Et = '0000-00-00',
    Email_Et = 'DemyMoore@yahoo.fr',
    Photo_Et = 'photo96' 
    WHERE Matricule_Et = '012345' AND Nom_Et = 'WILLIS' AND Prenom_Et = 'Bruce' AND Date_de_naissance_Et = '0000-00-00' AND Email_Et = 'Bruce.Willis@gmail.com' AND Photo_Et = 'photo225c' AND Matricule_Et = '123456' AND Nom_Et = 'MOORE' AND Prenom_Et = 'Demi' AND Date_de_naissance_Et = '0000-00-00' AND Email_Et = 'DemyMoore@yahoo.fr' AND Photo_Et = 'photo96'
    Cette chaine ne met à jour qu'un seul champ, est-ce normal ?

    Un tout grand merci d'avance.

    beegees

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Et bien j'imagine qu'il n'y a qu'une seule ligne qui répond à votre WHERE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select count(*) from etudiants 
    WHERE Matricule_Et = '012345' AND Nom_Et = 'WILLIS' AND Prenom_Et = 'Bruce' AND Date_de_naissance_Et = '0000-00-00' AND Email_Et = 'Bruce.Willis@gmail.com' AND Photo_Et = 'photo225c' AND Matricule_Et = '123456' AND Nom_Et = 'MOORE' AND Prenom_Et = 'Demi' AND Date_de_naissance_Et = '0000-00-00' AND Email_Et = 'DemyMoore@yahoo.fr' AND Photo_Et = 'photo96'
    Ca m'étonnerait toutefois que vous ayez besoin de préciser autant de conditions dans le WHERE.

    J'imagine que vous essayez d'écrire plutôt la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    UPDATE etudiants
    SET Nom_Et = 'WILLIS',
        Prenom_Et = 'Bruce',
        Date_de_naissance_Et = '0000-00-00',
        Email_Et = 'Bruce.Willis@gmail.com',
        Photo_Et = 'photo225c',
        Matricule_Et = '123456',
        Nom_Et = 'MOORE',
        Prenom_Et = 'Demy',
        Date_de_naissance_Et = '0000-00-00',
        Email_Et = 'DemyMoore@yahoo.fr',
        Photo_Et = 'photo96' 
    WHERE
        Matricule_Et = '012345'

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    En fait, c'est du code PHP qui génère ma chaine SQL.

    Si j'ai un tableau avec trois colonnes qui contient matricule, nom, prénom et que je mets à jour les 3 champs, il ne mettra à jour que le matricule.

    Si je mets à jour Nom et prénom, il ne mettra à jour que Nom.

    Les deux acteurs n'ont pas le même matricule donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    UPDATE etudiants
    SET Nom_Et = 'WILLIS',
        Prenom_Et = 'Bruce',
        Date_de_naissance_Et = '0000-00-00',
        Email_Et = 'Bruce.Willis@gmail.com',
        Photo_Et = 'photo225c',
        Matricule_Et = '123456',
        Nom_Et = 'MOORE',
        Prenom_Et = 'Demy',
        Date_de_naissance_Et = '0000-00-00',
        Email_Et = 'DemyMoore@yahoo.fr',
        Photo_Et = 'photo96' 
    WHERE
        Matricule_Et = '012345'
    ne me semble pas adapté (je peux me tromper)

    Merci encore.

    beegees

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Au temps pour moi j'avais survolé le code et raté le fait qu'il y avait deux acteurs.

    Il vous faut passer je pense par deux updates distincts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    UPDATE etudiants
    SET Nom_Et = 'WILLIS',
        Prenom_Et = 'Bruce',
        Date_de_naissance_Et = '0000-00-00',
        Email_Et = 'Bruce.Willis@gmail.com',
        Photo_Et = 'photo225c',
    WHERE
        Matricule_Et = '012345'
     
    UPDATE etudiants
    SET Nom_Et = 'MOORE',
        Prenom_Et = 'Demy',
        Date_de_naissance_Et = '0000-00-00',
        Email_Et = 'DemyMoore@yahoo.fr',
        Photo_Et = 'photo96' 
    WHERE
        Matricule_Et = '123456'
    Et accessoirement c'est étonnant que votre première requête fasse ne serait-ce qu'une mise à jour car vous avez deux conditions qui s'excluent l'une de l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     UPDATE etudiants
    ...
    WHERE Matricule_Et = '012345' AND ...
    AND Matricule_Et = '123456'...

Discussions similaires

  1. PL/SQL et mise à jour d'une table
    Par thisistheend dans le forum PL/SQL
    Réponses: 5
    Dernier message: 28/09/2011, 17h35
  2. Requete SQL soustraire 7 jours a une date
    Par link.80 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 11/05/2009, 17h44
  3. [AC-2003] Mise-a-jour d'une seule ligne d'un tableau
    Par Quentin M dans le forum IHM
    Réponses: 3
    Dernier message: 11/05/2009, 16h08
  4. Réponses: 6
    Dernier message: 03/10/2006, 09h44
  5. [SQL serveur] [debutant] requette sur une seule table
    Par glanumf dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2006, 15h27

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