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 :

Principe des () dans des requêtes imbriquées.


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Principe des () dans des requêtes imbriquées.
    Bonjour,

    Je n'arrive à comprendre la règle des parenthèses dans une syntaxe SQL ACCESS.

    J'ai besoin de faire des Select imbriqués : une table va pointer dans deux jointures chacune constituée par une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    la syntaxe suivante fonctionne 
    SELECT CAL_Mois AS Mois, 
           count(*) AS x, 
           sum(A.nb) AS 'Nombre de Jours 2013', 
           sum(A.Cumul) AS 'Cumul 2013'
      FROM met_Mois 
     
      LEFT JOIN (SELECT HIS_Date, 
            1 as nb, 
            Sum(HIS_RAIN_Moyenne) AS Cumul 
            FROM met_historique 
            WHERE val(Left(HIS_Date,4))=2013 
            GROUP BY HIS_Date 
            HAVING Sum(HIS_RAIN_Moyenne)<>0) A on Mid(A.HIS_Date, 6, 2) = met_Mois.CAL_Mois
     
    GROUP BY CAL_Mois
    Si j'ajoute une seconde jointure cela plante.
    Je sais qu'il faut mettre certains blocs entre () mais je ne comprends pas lesquels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    SELECT CAL_Mois AS Mois, 
           count(*) AS x, 
           sum(A.nb) AS 'Nombre de Jours 2013', 
           sum(A.Cumul) AS 'Cumul 2013',
           sum(B.nb) AS 'Nombre de Jours 2012', 
           sum(B.Cumul) AS 'Cumul 2012'
      FROM met_Mois 
     
      LEFT JOIN (SELECT HIS_Date, 
            1 as nb, 
            Sum(HIS_RAIN_Moyenne) AS Cumul 
            FROM met_historique 
            WHERE val(Left(HIS_Date,4))=2013 
            GROUP BY HIS_Date 
            HAVING Sum(HIS_RAIN_Moyenne)<>0) A on Mid(A.HIS_Date, 6, 2) = met_Mois.CAL_Mois
     
      LEFT JOIN (SELECT HIS_Date, 
            1 as Nb,
            Sum(HIS_RAIN_Moyenne) AS Cumul 
            FROM met_historique 
            WHERE val(Left(HIS_Date,4))=2013-1 
            GROUP BY HIS_Date 
            HAVING Sum(HIS_RAIN_Moyenne)<>0) B ON mid(B.HIS_Date,6,2) = met_Mois.CAL_Mois
     
    GROUP BY CAL_Mois

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Dans ce genre de cas, le plus simple est encore d'enregistrer les sous-requêtes afin de pouvoir les nommer.

    Ensuite, avec le QBE vous pourrez voir où vont les () suivant le sens des jointures choisi. Rien ne vous empêche ensuite de remettre les sous-requêtes directement dans la requête principale.

    Access est ennuyeux de ce côté là et la piètre qualité de l'éditeur SQL n'arrange rien.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Merci.
    Je ne connais pas trop la notion de sous-requêtes.
    je travaille plus sous SQl Serveur et dans cet environnement je ne pense pas que j'aurais eu de souci.
    Il faut que j'arrive à ne faire qu'une seule requête SQL pour l'intégrer ensuite dans une bibliothèque de logiciel. Si il est possible qu'une requête en appelle une autre why not.

    J'essaie cela demain.

Discussions similaires

  1. des % % dans une requête paramètrée
    Par paradeofphp dans le forum SQL
    Réponses: 6
    Dernier message: 16/11/2007, 11h03
  2. des % % dans une requête paramètrée
    Par paradeofphp dans le forum ASP.NET
    Réponses: 6
    Dernier message: 15/11/2007, 14h35
  3. [AJAX] Envoyer des & dans des variables
    Par kivan666 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/05/2007, 20h10
  4. des ' et des " dans un champs, et je doit les recups
    Par gretch dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2006, 10h01
  5. Passage de paramètres dans une requête imbriquée
    Par DrakkoFR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 12h46

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