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 :

Comportement bizare d'un update


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Points : 69
    Points
    69
    Par défaut Comportement bizare d'un update
    Bonjour,
    je souhaite mettre à jour une table (`synthese`) en fonction d'une autre (`synthese_chim`).
    j'ai donc écrits la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE synthese s, synthese_chim t 
    SET s.nb_sejour = t.nb_sejour 
    WHERE s.id_lieu = t.id_lieu AND s.id_pathologie = t.id_pathologie AND s.id_traitement = 9 AND s.id_temps = 40;
    Ors,Je joue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nb_sejour from synthese_chim where id_traitement = 9 AND id_lieu = 140 AND id_pathologie = 1 AND id_temps = 40;
    j'obtiens 21.
    Je joue ma requête update.
    pour valider, je vérifie sur ma table de destination (`synthese`) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nb_sejour from synthese where id_traitement = 9 AND id_lieu = 140 AND id_pathologie = 1 AND id_temps = 40;
    j'obtiens 15.

    Je ne comprends pas pourquoi ma dernière requête ne retourne pas 21.
    Sachant que si je joue mon update directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE synthese s SET s.nb_sejour = 21 WHERE s.id_lieu = 140 AND s.id_pathologie = 1 AND s.id_traitement = 9 AND s.id_temps = 40;
    j'obtiens bien 21 sur la table synthèse.

    Des idées?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    1er update :

    2eme update :
    Faute de frappe ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Points : 69
    Points
    69
    Par défaut
    oui, faute de frappe,
    je viens de corriger.

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    c'est peut-être normal car tes 2 update n'ont rien à voir...

    au passage écris tes jointure de manière normalisée, même dans un update c'est plus clair:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE synthese s
    inner join synthese_chim t on s.id_lieu = t.id_lieu AND s.id_pathologie = t.id_pathologie
    SET s.nb_sejour = t.nb_sejour 
    WHERE s.id_traitement = 9 AND s.id_temps = 40;
    et l'autre:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE synthese s
    SET s.nb_sejour = 21
    WHERE s.id_lieu = 140 AND s.id_pathologie = 1 AND s.id_traitement = 9 AND s.id_temps = 40;
    ta jointure impose la correspondance dans les 2 tables sur le critère s.id_pathologie = t.id_pathologie pour qu'une modification soit faite...

    c'est donc ça que tu dois tester:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select s.id
    from synthese s
    inner join synthese_chim t on s.id_lieu = t.id_lieu AND s.id_pathologie = t.id_pathologie
    WHERE s.id_traitement = 9 AND s.id_temps = 40;
    tu auras les lignes concernées par l'update
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Points : 69
    Points
    69
    Par défaut
    Merci Eric,
    Mes jointures old-school m'ont joué un tour.
    J'ai mélangé condition de jointure et restriction.
    le bon update doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE synthese s, synthese_chim t  
    INNER JOIN synthese_chim t ON s.id_lieu = t.id_lieu AND s.id_pathologie = t.id_pathologie AND s.id_traitement=t.id_traitement 
    SET s.nb_sejour = t.nb_sejour
    WHERE s.id_traitement = 9 AND s.id_temps = 40;

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

Discussions similaires

  1. Comportement bizare sur une requete
    Par pschiit dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/02/2011, 10h53
  2. Comportement Bizare PostBack
    Par Alexis35 dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/02/2011, 14h24
  3. [XL-2002] Fonction "SI" se comporte "BIZAREMENT"
    Par Mielure dans le forum Excel
    Réponses: 7
    Dernier message: 04/06/2009, 06h14
  4. Comportement bizare avec webutil et excel
    Par squallJ dans le forum Forms
    Réponses: 3
    Dernier message: 01/10/2007, 17h52
  5. [VS 2003][C] Comportement bizare de fopen
    Par chronos dans le forum Visual C++
    Réponses: 2
    Dernier message: 18/07/2007, 19h27

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