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 :

Requête d'union: problème de syntaxe ?


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requête d'union: problème de syntaxe ?
    Bonjour,

    Je ne comprends pas pourquoi cette requète me renvoi une erreur:
    "Erreur de synthaxe dans l'opération Join"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT SUM(pts) AS total
    FROM
    ((SELECT ((MDT+MST)*débit) as pts
    FROM TblFlux as F, TblGemsInfoBassins as G
    WHERE F.Bassin = G.Bassin AND F.bassin='Amazonas')
    UNION ALL
    (SELECT SUM((MDT+MST)*débit) as pts
    FROM TblFlux as F, TblGemsInfoBassins as G
    WHERE F.Bassin = G.Bassin AND ocean IN('NAT','SAT')))
    Qu'en dites vous ?

    Merci d'avance
    SmilM

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    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 : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Pourquoi autant de parenthèses ? Vous en avez acheté un stocke et il faut les écouler ?????
    Ne savez vous pas utiliser l'opérateur de jointure ?
    De plus si vous vaiez indenté votre requête vous auriez trouvé immédiatement votre erreur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT SUM(pts) AS total
    FROM   (SELECT (MDT + MST) * débit) as pts
            FROM   TblFlux as F
                   INNER JOIN TblGemsInfoBassins as G
                         ON F.Bassin = G.Bassin 
            WHERE  F.bassin = 'Amazonas'
            UNION  ALL
            SELECT SUM((MDT + MST) * débit) as pts
            FROM   TblFlux as F
                   INNER JOIN TblGemsInfoBassins as G
                         ON F.Bassin = G.Bassin 
            WHERE  ocean IN ('NAT', 'SAT')
           ) AS T
    A +

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide.
    Il est vrai que j'avais sûrement un peu trop de parenthèses.

    Cependant, la requête que vous proposez me renvoie l'erreur suivante:
    "Erreur de syntaxe dans la requête Union"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT SUM(pts) AS total
    FROM   (SELECT (MDT + MST) * débit) AS pts
            FROM   TblFlux AS F
                   INNER JOIN TblGemsInfoBassins AS G
                         ON F.Bassin = G.Bassin 
            WHERE  F.bassin = 'Amazonas'
            UNION  ALL
            SELECT SUM((MDT + MST) * débit) AS pts
            FROM   TblFlux AS F
                   INNER JOIN TblGemsInfoBassins AS G
                         ON F.Bassin = G.Bassin 
            WHERE  ocean IN ('NAT', 'SAT')
           ) AS T
    Savez-vous d'où cela peut provenir ?

    Merci pour tout,
    SmilM

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Quel SGBD donne ce message ?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    SQL pro avait oublié la suppression d'une parenthèse ouvrante.
    Dans ce genre de cas, message d'erreur qui ne semble pas justifié, il peut être bon de vérifier que les parenthèses ouvrantes sont bien fermées, à l'aide de n'importe quel bon éditeur (là je suis sous linux j'ai vérifié avec geany, sous windows j'aurais vérifié avec Notepad ++, mais il y en a des dizaines ou centaines d'autres qui mettent en rouge la parenthèse ouvrante, lorsqu'on est positionné sur la fermante, et inversement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT SUM(pts) AS total
    FROM   (SELECT (MDT + MST) * débit AS pts
            FROM   TblFlux AS F
                   INNER JOIN TblGemsInfoBassins AS G
                         ON F.Bassin = G.Bassin 
            WHERE  F.bassin = 'Amazonas'
            UNION  ALL
            SELECT SUM((MDT + MST) * débit) AS pts
            FROM   TblFlux AS F
                   INNER JOIN TblGemsInfoBassins AS G
                         ON F.Bassin = G.Bassin 
            WHERE  ocean IN ('NAT', 'SAT')
           ) AS T
    Attention aussi au nom de table avec Accent.
    Cordialement
    Soazig

  6. #6
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Bien vu Soizig !

    Ce que je fais pour ne pas m'emmêler avec les parenthèses et autres accolades dans les codes SQL ou d'autres langages, c'est que j'indente systématiquement en mettant la première parenthèse à la ligne suivante.

    J'aurais ainsi écrit cette requête de la façon suivante :
    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 SUM(pts) AS total
    FROM
    (
      SELECT (MDT + MST) * débit AS pts
      FROM TblFlux AS F
      INNER JOIN TblGemsInfoBassins AS G ON F.Bassin = G.Bassin 
      WHERE F.bassin = 'Amazonas'
     
      UNION  ALL
     
      SELECT SUM((MDT + MST) * débit) AS pts
      FROM TblFlux AS F
      INNER JOIN TblGemsInfoBassins AS G ON F.Bassin = G.Bassin 
      WHERE  ocean IN ('NAT', 'SAT')
    ) AS T
    Ça me semble beaucoup plus lisible comme ça !

Discussions similaires

  1. Problème de syntaxe d'une requête
    Par Oulaoup dans le forum Access
    Réponses: 4
    Dernier message: 02/08/2017, 20h19
  2. ACCESS 97, requête union, problème de liaison entre 2 requêtes
    Par AGR26 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/09/2007, 19h00
  3. [requête]problème de syntaxe dans une insertion
    Par josua dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 16/05/2007, 09h50
  4. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 17h53
  5. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 12h02

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