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 :

UPDATE avec 2 SELECT [MySQL-4.1]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut UPDATE avec 2 SELECT
    Bonjour,
    Quelle est la requête SQL pour copier village.nom_village dans content.titre ?

    Je ne trouve pas la bonne syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    UPDATE ` content` 
    SET  `titre` = `village`.`nom_village` 
    WHERE  
    SELECT `village`.`nom_village` FROM `village`
    	(
    	SELECT `id` 
     	FROM ` content` 
    	WHERE `content`.`id` = `habitation`.`id`
    	)
    WHERE `habitation`.`fk_id_village` = `village`.`id_village`
    Merci pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Je verrais plutôt ce genre ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Update content c
    set c.titre = (select v.nom_village from village v inner join habitation h 
                  on v.id_village = h.fk_id_village
                  where c.id = h.id)
    Je mets à jour le titre de content par un select sur les 2 autres tables (INNER JOIN / ON)
    + La bonne liaison entre la table content et les 2 autres qui est assurée par la clause WHERE

    A tester donc ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Je mets à jour le titre de content par un select sur les 2 autres tables (INNER JOIN / ON)
    + La bonne liaison entre la table content et les 2 autres qui est assurée par la clause WHERE
    A tester donc ...
    Perfect vttman,
    Ta requête répond pile poil à mon besoin.
    Meilleurs voeux à tous
    Alain

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut à tous.

    Bonne année, bonne santé, mes meilleurs vœux à toutes et à tous pour l'année 2020.

    @ vttman : même si ta requête fonctionne, on ne fait pas des imbrications de sous-requêtes.
    On utilise pour cela des jointures !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        update  `content`     as c
     
    inner join  `habitation`  as h
            on  h.id         = c.id
     
    inner join  `village`     as v
            on  v.id_village = h.fk_id_village
     
           set  c.titre = v.nom_village;
    @+

  5. #5
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Tu fais comme tu veux Artemus24 ...

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut à tous.

    Bonne année, bonne santé, mes meilleurs vœux à toutes et à tous pour l'année 2020.

    @ vttman : même si ta requête fonctionne, on ne fait pas des imbrications de sous-requêtes.
    On utilise pour cela des jointures !
    Sauf que cette syntaxe, inventée par Sybase dans les données 80 est anormative ! Il y a une raison de logique (anomalie) et aussi de performances si cela n'est pas bien géré !

    Il vaut donc mieux enseigner les mises à jours avec des sous requêtes introduites pas WHERE ou EXISTS, et pourquoi pas à l'aide de CTE.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Non VTTMAN, il faut suivre les recommendations qui sont une amélioration apportées à MySql.

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

Discussions similaires

  1. Pb update avec sous select
    Par gnomathibus dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/03/2009, 13h47
  2. Requête update avec un select
    Par housni dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/08/2007, 00h22
  3. Update avec un select sur la même table
    Par Xunil dans le forum Administration
    Réponses: 5
    Dernier message: 09/04/2007, 16h40
  4. [Mysql 3.23] Un UPDATE avec un SELECT
    Par griese dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/12/2006, 09h09
  5. [ SQL ] Faire un update avec un select imbriqué
    Par zozolh2 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/04/2005, 12h05

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