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 :

requête UPDATE pour deux tables


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Points : 9
    Points
    9
    Par défaut requête UPDATE pour deux tables
    Bonjour la communauté.

    J'ai deux tables.
    table 1 : appartements_Lr avec un champ nat_mut. Dans ce champ on y trouve des abréviations (AN, VG, ...)

    table 2 : nature_mutation avec deux champs nat_muta (on y retrouve les abreviations) et un champ nature (on y retrouve les significations de ces abréviations).

    L'idée est que j'aimerai récupérer les significations de ces abréviations dans ma première table (appartements_Lr)

    J'ai beau parcourir le forum et essayer des solutions cela ne fonctionne pas.

    Voici ma requête qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE appartements_LR
    SET nat_mut=nature_mutation.nature
    FROM appartements_LR,nature_mutation
    WHERE nature_mutation.nat_muta=appartements_LR.nat_mut
    Quelqun aurait une idée ? Merci de votre aide.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Lancelot du Lac35 Voir le message
    J'ai deux tables.
    table 1 : appartements_Lr avec un champ nat_mut. Dans ce champ on y trouve des abréviations (AN, VG, ...)

    table 2 : nature_mutation avec deux champs nat_muta (on y retrouve les abreviations) et un champ nature (on y retrouve les significations de ces abréviations).
    Si toutes les abréviations ne font que deux lettres et que la clé primaire comme la clé étrangère sont toutes deux sur des colonnes de type CHAR(2) on peut accepter cette structure mais, d'une manière générale, une clé textuelle est une mauvaise clé.
    Ici en particulier, il vaut mieux être sûr que ces codes ne changeront jamais.

    L'idée est que j'aimerai récupérer les significations de ces abréviations dans ma première table (appartements_Lr)
    Mauvaise idée !
    Si c'est pour tout réunir dans une seule table, autant utiliser un tableur !

    Avec une vue qui fait une jointure sur les deux tables c'est très facile de récupérer les informations voulues.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE VIEW v_appart_avec_nature
    SELECT a.-- les colonnes souhaitées dela table appartements_LR
    	n.nature
    FROM appartements_LR a
    INNER JOIN nature_mutation n ON n.nat_muta = a.nat_mut
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Cinephil,

    Merci de ton aide. Je viens de trouver une autre solution qui semble fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE appartements_LR
    SET appartements_LR.nat_mut=(SELECT nature_mutation.nature FROM nature_mutation WHERE nature_mutation.nat_muta=appartements_LR.nat_mut);
    Pour ce qui est de la vue si j'ai bien compris il s'agit d'une jointure temporaire? Je m'en vais de ce pas essayer ta proposition mais j'ai bien peur qu'elle ne corresponde pas à mes besoins.

    Pour être plus clair la mise à jour de cette table est injecté directement dans un SIG. Pour les utilisateurs c'est plus clair quand ils ouvrent le fiche info d'avoir la signification de cette abréviation. Or avec cette vue j'ai bien peur de ne rien avoir.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu n'as pas dû aller lire les liens de mon message !

    Une vue est une requête enregistrée qui s'interroge ensuite comme une table.

    Au lieu d'interroger une table contenant des données redondantes qui risquent d'être écrites de façons différentes d'une ligne à l'autre, fait la requête SELECT qui te permet d'afficher la liste aux utilisateurs sur la vue.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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. requête update entre deux tables
    Par evevev dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/03/2010, 19h21
  2. [Access] Update liant deux tables
    Par zapatta dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/09/2006, 16h17
  3. [SQL] Problème avec script de pagination et requête sql sur deux tables
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h06
  4. [9iR2] UPDATE pour MAJ table ds 1 autre identique...
    Par mainecoon dans le forum Oracle
    Réponses: 8
    Dernier message: 15/02/2006, 20h33
  5. Count pour deux tables
    Par Safaritn dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/11/2005, 16h22

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