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 :

faire une requête sur le résultat d'une requête


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut faire une requête sur le résultat d'une requête
    Bonjour à tous,
    J'aurais besoin d'un petit coup de main.
    alors j'ai une première requête et je voudrais faire une requête sur le résultat de cette première requête.
    1ère requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT g.*
    FROM atl_gite g, atl_secteur s, atl_commune c
    WHERE g.atl_secteur_id_secteur=s.id_secteur AND s.atl_commune_id_commune=c.id_commune AND c.id_commune=105
    2ème requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update atl_gite
    set nom_gite= REPLACE(nom_gite,"G","")
    En fait je voudrais la lettre "G" des gîtes dont la commune est 105

    Je me casse la tête dessus depuis le début de l'aprem.

    Quelqu'un pour me donner un coup de main ?

    Merci à tous

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    As tu un backup ?
    Que donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    update atl_gite g
       set nom_gite = REPLACE(nom_gite,'G','')
     where exists (select 1
                     from atl_secteur s
                     join atl_commune c on s.atl_commune_id_commune = c.id_commune
                    where s.id_secteur = g.atl_secteur_id_secteur
                      AND c.id_commune = 105)

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    En utilisant tes requêtes, ça pourrait donner quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    update atl_gite
    set nom_gite = REPLACE(nom_gite,'G','')
    where atl_gite.primaryKey IN 
    (
    	SELECT g.primaryKey
    	FROM atl_gite g, atl_secteur s, atl_commune c
    	WHERE g.atl_secteur_id_secteur=s.id_secteur AND s.atl_commune_id_commune=c.id_commune AND c.id_commune=105
    )
    C'est moins beau que la requête de skuatamad mais c'est peut être moins risqué

    Si MySQL te sort un truc du genre : "can't specify target table ..."
    Il faut utiliser une table temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    update atl_gite
    set nom_gite = REPLACE(nom_gite,'G','')
    where atl_gite.primaryKey IN 
    (
    	SELECT g.primaryKey FROM 
    	(
    		SELECT g.primaryKey
    		FROM atl_gite g, atl_secteur s, atl_commune c
    		WHERE g.atl_secteur_id_secteur=s.id_secteur AND s.atl_commune_id_commune=c.id_commune AND c.id_commune=105
    	)tmp
    )

  4. #4
    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
    Citation Envoyé par Fred_34 Voir le message
    C'est moins beau que la requête de skuatamad mais c'est peut être moins risqué
    Bonjour,

    Pouvez-vous développer ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Bonjour,

    Pouvez-vous développer ?
    C'est moins beau car il y a une jointure supplémentaire (En plus sous l'ancienne forme) et une table temporaire.
    Moins risqué car en utilisant exactement sa requêtes initiale, on ne risque pas de mettre à jour plus que nécessaire -> Clin d'oeil au fait que skuatamad demande à clanou01 si il a un backup.

  6. #6
    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
    Je pensais que vous disiez que votre méthode était moins risquée que celle de skuatamad.

    D'où ma question... qui n'a plus lieu d'être.

  7. #7
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Bonjour à tous,

    Merci d'avoir plancher sur mon problème !!
    J'ai testé la proposition de skuatamad et ça marche nickel

    C'est vraiment un super forum, merci pour votre disponibilité.

    à bientôt

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

Discussions similaires

  1. [ODBC] Exécuter une requête sur le résultat d'une autre
    Par che0po dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/05/2012, 11h29
  2. Faire un COUNT sur le résultat d'une requête (dont un UNION)
    Par korospoukine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/09/2011, 12h50
  3. [VxiR2] Faire une requete sur les résultats d'une première requete
    Par amy0o0 dans le forum Deski
    Réponses: 2
    Dernier message: 01/02/2011, 21h39
  4. Effectuer une opération sur le résultat d'une requête
    Par egg3774 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 13/03/2008, 14h29
  5. Requête sur les résultats d'une requête
    Par kiro57 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/10/2007, 17h48

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