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 et SQL. Discussion :

Sous-requête "Select" dans une requête "update"


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien SIG
    Inscrit en
    Mars 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien SIG

    Informations forums :
    Inscription : Mars 2013
    Messages : 62
    Points : 44
    Points
    44
    Par défaut Sous-requête "Select" dans une requête "update"
    Bonjour à tous

    Comme vous le savez sans doute le moteur d'access ne permet pas d'imbriquer une requête "select" après le "=" de la clause "Set" du'une requête de mise à jour ("Update").

    Voici ma requête en version complexe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE Tb_Irrigation SET Tb_Irrigation.Irrig_Surface = (SELECT Sum(Tb_Parcelles.Par_Surface) AS SommeDePar_Surface
    FROM Tb_Irrigation INNER JOIN Tb_Parcelles ON Tb_Irrigation.Irrig_Parcelles.Value = Tb_Parcelles.Par_Num
    GROUP BY Tb_Irrigation.Irrig_ID
    HAVING (((Tb_Irrigation.Irrig_ID)=[Formulaires]![F04_Irrigation]![SF04_Surfaces irriguées].[Form]![txt_Irrig_ID])))
    WHERE (((Tb_Irrigation.Irrig_ID)=[Formulaires]![F04_Irrigation]![SF04_Surfaces irriguées].[Form]![txt_Irrig_ID]));
    et en version compréhensible (regardez bien les parenthèses car la sous requête "SELECT" fini après la clause "HAVING"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE Table1 SET Table1.champ2 = (SELECT Sum(Table2.champ2) 
    FROM Table2 INNER JOIN Table1 ON Table1.champ3 = Table2.champ3
    GROUP BY Table1.champ1
    HAVING ((Table1.champ1)=[Formulaires]![txt_Table1champ1])))
    WHERE ((Table1.champ1)=[Formulaires]![txt_Table1champ1]);
    Il semble d'après ce que j'ai lu autre part sur le site qu'il faut d'abord exprimer les jointures mais je n'arrive pas à adapter ma requête pour Access. Il semblerait pourtant que ma requête puisse fonctionner avec MySQL par exemple( j'ai malgré tout un doute sur la nécessité d'exprimé 2 fois le même critère (Cf la clause "Having" de la sous requête et la clause "Where" de la requête générale)

  2. #2
    Membre du Club
    Homme Profil pro
    Technicien SIG
    Inscrit en
    Mars 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien SIG

    Informations forums :
    Inscription : Mars 2013
    Messages : 62
    Points : 44
    Points
    44
    Par défaut
    Bon je vous montre ce que j'ai tenté pour modifier ma requête dans une forme plus proche du langage d'Access, malheureusement sans succès:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Tb_Irrigation INNER JOIN Tb_Parcelles ON Tb_Irrigation.Irrig_Parcelles.Value = Tb_Parcelles.Par_Num
    SET Tb_Irrigation.Irrig_Surface = Sum(Tb_Parcelles.Par_Surface) 
    WHERE (((Tb_Irrigation.Irrig_ID)=[Formulaires]![F04_Irrigation]![SF04_Surfaces irriguées].[Form]![txt_Irrig_ID]));
    Pour info il s'agit de faire la somme des surfaces de parcelles irriguées saisie dans un formulaire.

Discussions similaires

  1. Appeler dans une requête des variables définies dans une macro
    Par piflechien73 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/08/2009, 15h12
  2. Timestamp dans une requête MySQL SELECT
    Par Nowwis dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2009, 11h33
  3. Select in dans une requête sql
    Par remyhaddad dans le forum SQL
    Réponses: 1
    Dernier message: 26/05/2008, 21h15
  4. Réponses: 2
    Dernier message: 28/02/2007, 20h01
  5. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18

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