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 :

UPDATE pas même nombre de lignes que SELECT


Sujet :

Langage SQL

  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut UPDATE pas même nombre de lignes que SELECT
    Bonjour.

    Toujours dans le cadre de l'analyse des données d'une base sur les bovins, dans le but d'en faire une BDD structurée correctement pour de futures études statistiques, j'ai 2 tables source : bovins et veaux.

    La table des veaux contient l'information sur leur mère et sur leur père, lesquels se trouvent dans la table des bovins.
    Ayant remarqué que le sexe de certains bovins n'était pas renseigné, j'ai effectué la requête suivante pour trouver les pères des veaux figurant dans la table bovins et n'ayant pas de sexe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT b.*
    FROM bdni.bovins b
    INNER JOIN bdni.veaux v ON b.COD_PAYS = v.COD_PAYS_PERE 
      AND b.NUM_NAT = v.NUM_NAT_PERE
    WHERE b.SEXE = '' OR b.SEXE IS NULL
    Résultat : 124 lignes

    Je décide de mettre à jour ces lignes avec la requête suivante pour leur affecter le SEXE = '1' (mâle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE bdni.bovins b
    INNER JOIN bdni.veaux v ON b.COD_PAYS = v.COD_PAYS_PERE 
      AND b.NUM_NAT = v.NUM_NAT_PERE
    SET b.SEXE = '1'
    WHERE b.SEXE = '' OR b.SEXE IS NULL
    Résultat : 10 lignes seulement ont été mises à jour !
    Pourtant, les conditions de jointure de restriction sont les mêmes.

    Une idée du pourquoi du comment du quoi ou qu'est-ce ?

    EDIT : Base MySQL
    Vu que je n'ai pas eu de réponse satisfaisante à ma question dans le forum MySQL, je tente ma chance en Langage SQL...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Dans ce cas la, tu ne peux pas faire ca ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE bdni.bovins b
    INNER JOIN bdni.veaux v ON b.COD_PAYS = v.COD_PAYS_PERE 
      AND b.NUM_NAT = v.NUM_NAT_PERE
      AND (b.SEXE = '' OR b.SEXE IS NULL)
    SET b.SEXE = '1'

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Mélanger les clauses de jointure et de restriction, c'est pas beau et il y a peut-être des cas où c'est carrément à éviter (dans les SELECT en tout cas).
    En plus dans le cas présent, je ne pense pas que ça change grand chose !

    Ce que je cherche, ce n'est pas forcément une écriture différente mais la raison du phénomène. Ou alors une écriture juste si quelqu'un m'explique pourquoi ce que j'ai fait serait faux.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Nombre de ligne que retourne une requete
    Par newmar dans le forum JDBC
    Réponses: 4
    Dernier message: 22/05/2008, 01h28
  2. Nombre de ligne que retourne une ligne
    Par newmar dans le forum Hibernate
    Réponses: 7
    Dernier message: 15/05/2008, 12h40
  3. update d'un nombre de ligne
    Par Albat_r dans le forum kettle/PDI
    Réponses: 6
    Dernier message: 24/04/2008, 11h03
  4. Réponses: 1
    Dernier message: 01/08/2007, 21h10
  5. Réponses: 6
    Dernier message: 19/03/2007, 11h09

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