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 :

Changer toute une colonne à partir d'une autre table


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut Changer toute une colonne à partir d'une autre table
    Bonjour à tous,

    J'ai une base de données de biens immobiliers. Une table appelée "biens" contient des sites (adresse, ville, photos du bâtiment...), et l'autre s'appelle "locaux" contient des locaux à louer dans chacun de ces sites (superficies, montant du loyer...). La table locaux contient donc une référence (clé étrangère) à la table biens.

    Cette table locaux ayant été rajoutée tardivement, j'ai dû remanier tout mon code php. La table "biens" comportait une colonne "superficie" et une colonne "loyer". Donc, pour des raisons de commodité, plutôt que d'agir sur le php, je voudrais remplacer le contenu de la colonne "superficie" (je ferai la même chose avec le loyer) par la valeur minimum parmi tous les locaux du site (pour indiquer "à partir de..."). J'ai donc écrit la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE biens SET superficie = SELECT MIN(locaux.superficie) FROM locaux INNER JOIN biens ON locaux.id_bien = biens.id
    mais j'obtiens l'erreur suivante :
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM biens WHERE superficie FROM locaux INNER JOIN biens ON locaux . id_bien <' at line 1
    Je ne comprends pas. Ça ne semble pas correspondre à ce que j'ai saisi.
    Qu'est-ce qui ne va pas, dans ma requête ?

    Merci par avance pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 790
    Points
    30 790
    Par défaut
    Et si le contenu de la table LOCAUX évolue (modification de la superficie, ajout ou suppression d'un local,...), tu fais à nouveau une mise à jour de la table BIENS ?
    C'est une vue qu'il te faut, qui sera ainsi toujours à jour...

    Si tu persistes dans ton choix, voici une syntaxe plus adaptée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE  biens
    SET     superficie =
            (   SELECT  MIN(locaux.superficie)
                FROM    locaux
                WHERE   locaux.id_bien = biens.id
            )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    Bien vu. Tu as raison. Pour l'instant, je vais faire comme ça, mais il faudra, à terme que je touche au PHP pour supprimer les colonnes "superficie" et "loyer" de la table "biens". Ou bien les mettre à jour dès qu'un nouveau local est ajouté ou les données mises à jour. Je n'ai pas le choix. Je vais tâcher d'y réfléchir.

  4. #4
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    J'ai essayé ta syntaxe, j'obtiens toujours ceci : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT FROMlocaux FROM biens WHERE locaux.id_bien = biens.id )' at line 1

    Je précise que je n'exécute pas la requête, de peur de faire une erreur, mais je la teste avec le bouton "simuler la requête".

  5. #5
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    Sur les bons (excellents) conseils de @al1_24, j'ai modifié mon PHP afin d'afficher systématiquement le loyer minimum. Je n'ai donc pas touché à ma base de données (à laquelle je vais pouvoir supprimer quelques champs), et je n'ai pas résolu mon problème de syntaxe MySQL, qui fait l'objet du présent thread, et justifie sa présence dans cette section. Le problème semble cependant résolu. Mais si vous avez des solutions pour le problème de syntaxe, je suis preneur.

Discussions similaires

  1. Remplir une colonne à partir d'une autre colonne
    Par Anibel dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/04/2013, 22h03
  2. [XL-2007] Remplissage automatique d'une colonne à partir d'une autre colonne
    Par realwail dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 13/02/2012, 21h58
  3. Mettre à jour une colonne à partir d'une autre
    Par Peanut dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/06/2011, 18h19
  4. remplir une colonne à partir d'une autre table
    Par judy_ dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/06/2008, 22h05
  5. Réponses: 2
    Dernier message: 31/01/2008, 17h58

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