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

Langage SQL Discussion :

SQL sous VBA - jointures multiples - missing operator


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut SQL sous VBA - jointures multiples - missing operator
    Bonjour,

    Ma requête initiale fonctionne (produit cartésien Periods$K1 x Material$A suivi d'une jointure interne avec Periods$A) mais lorsque j'ajoute une dernière jointure externe, pour aller chercher des informations optionnelles, cette fois avec la table Evo$A, j'obtiens cette erreur:

    Syntax error (missing operator) in query expression
    Je voudrais déjà savoir s'il n'y a pas d'erreur formelle dans redaction de ma requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT mm.[Region], mm.[Material type], mm.[Producer], 
    mm.[Commercial name], p.[Start Month], p.[Type], 
    p.[Period], e.[Evolution] 
    FROM  ( 
        SELECT [Region], [Material type], [Producer], 
        [Commercial name], [Type], [Month] 
        FROM  [Periods$K1:M25], [Material$A1:F29] 
        ) AS mm 
    INNER JOIN [Periods$A1:D13] AS p 
    ON mm.[Month] = p.[Start Month] AND mm.[Type] = p.[Type] 
    LEFT JOIN [Evo$A1:E181] AS e 
    ON p.[Period] = e.[Period]
    WHERE p.[Start Month] IS NOT NULL 
    ORDER BY mm.[Region], mm.[Material type], mm.[Producer], mm.[Commercial name]
    Comme je travaille à l'intérieur d'Excel toute la syntaxe SQL n'est pas toujours utilisable: exemple le produit cartésien à dû être isolé dans une sous-requête).

    (Dans Excel les crochets [] servent à ignorer les espaces et à désigner les tables par des plages de cellules).

    Merci pour votre aide,

    Francis

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Le produit cartésien est-il nécessaire ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Le produit cartésien est-il nécessaire ?
    Oui, j'ai besoin de la combinaison des 2 premières tables

    J'utilise la référence : Microsoft ActiveX Data Objects 6.1 Library

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Et en ajoutant des parenthèses autour des jointures, à la mode Access, est-ce que ça fonctionne ?
    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
    SELECT mm.[Region], mm.[Material type], mm.[Producer], 
    mm.[Commercial name], p.[Start Month], p.[Type], 
    p.[Period], e.[Evolution] 
    FROM  (
        (     SELECT [Region], [Material type], [Producer], 
        [Commercial name], [Type], [Month] 
        FROM  [Periods$K1:M25], [Material$A1:F29] 
        ) AS mm 
    INNER JOIN [Periods$A1:D13] AS p 
    ON mm.[Month] = p.[Start Month] AND mm.[Type] = p.[Type]  
    )
    LEFT JOIN [Evo$A1:E181] AS e 
    ON p.[Period] = e.[Period]
    WHERE p.[Start Month] IS NOT NULL 
    ORDER BY mm.[Region], mm.[Material type], mm.[Producer], mm.[Commercial name]
    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.

  5. #5
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Et en ajoutant des parenthèses autour des jointures, à la mode Access, est-ce que ça fonctionne ?
    J'ai essayé, ça ne fonctionne pas

  6. #6
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    En enlevant la clause WHERE ça fonctionne.
    Je mets en résolu, mais si vous avez l'explication ça m'aiderait et aussi où devrais-je stipuler la clause WHERE dans ce cas.

    Merci al1_24

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT mm.[Region], mm.[Material type], mm.[Producer], 
    mm.[Commercial name], p.Type, p.[Start Month], 
    p.[Period], e.[Evolution] 
    FROM  ( 
        ( SELECT [Region], [Material type], [Producer], 
        [Commercial name], Type, [Month] 
        FROM [Periods$K1:M25], [Material$A1:F29] 
        ) AS mm 
    INNER JOIN [Periods$A1:D13] AS p 
    ON mm.[Month] = p.[Start Month] AND mm.Type = p.Type 
    ) 
    LEFT JOIN [Evo$A1:E8] AS e 
    ON e.[Period] = p.[Period] 
    ORDER BY mm.[Region], mm.[Material type], mm.[Producer], mm.[Commercial name]

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

Discussions similaires

  1. Requête SQL sous VBA - Between
    Par p'tite Sandrine dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/08/2012, 20h24
  2. Requete SQL sous VBA
    Par titeZ dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/08/2007, 10h05
  3. Réponses: 3
    Dernier message: 02/08/2007, 23h41
  4. Requete SQL sous VBA
    Par Sam 069 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/07/2006, 11h04
  5. Format dans Requete SQL sous VBA
    Par Sam 069 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/07/2006, 12h09

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