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 :

Erreur lors de l'exécution d'une query avec TOP 1


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2024
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2024
    Messages : 17
    Par défaut Erreur lors de l'exécution d'une query avec TOP 1
    Bonjour,

    Lorsque j'execute cette query seule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select TOP 1 t1.val1  from table1 t1 where t1.arg  = 123456 order by t1.val2 desc
    Je n'ai aucun souci, mais si j'intègre cette meme query dans un enseble de select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    (Select ....from.... where...) as Résult1,
    (Select ....from.... where...) as Résult2,
    (Select ....from.... where...) as Résult3,
    (select TOP 1 t1.val1  from table1 t1 where t1.arg  = 123456 order by t1.val2 desc) as Result4,
    (Select ....from.... where...) as Résult5,
    (Select ....from.... where...) as Résult6
    From tableX tx
    Where tx.val1 = 123456
    J'ai un message me signalant une erreur de syntaxe au niveau du TOP

    SQL Error [156] [ZZZZZ]: Incorrect syntax near the keyword 'TOP'.

    Auriez vous une idée du souci ?

    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 640
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Il faut communiquer la vraie requête, préciser le SGBD et surtout le but recherché fonctionnellement parlant (pas le comment, mais le quoi)
    Il y a probablement beaucoup plus simple comme requête.

    En tout cas, une chose est sure, c'est que ceci n'est pas correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    From tableX tx
    Where tx = 123456
    tx étant l'alias de la table tablex, il ne peut pas être utilisé dans la restriction WHERE comme une valeur de colonne...

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2024
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2024
    Messages : 17
    Par défaut
    J'ai corrigé mon post et je ne peux divulger la requête originale

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    Billets dans le blog
    17
    Par défaut
    Quel est le SGBD ? Tous ne supportent pas TOP. Avec MySQL, par exemple, il faut utiliser LIMIT en fin de requête.

    De plus, dans ton SELECT il manque une , après chaque (sous-requête).

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2024
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2024
    Messages : 17
    Par défaut
    les virgules ont été ajoutée.

    La version ASE est

    Adaptive Server Enterprise/16.0 SP04 PL01 HF2/EBF 30229 SMP/P/x86_64/SLES 12.4/ase160sp04pl01x/3488/64-bit/FBO/Tue Feb 8 20:54:55 2022

    Cordialement

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 640
    Billets dans le blog
    10
    Par défaut
    Comme je le disais précédemment, il y a sans doute moyen de faire plus simple, sans communiquer la vraie requête, il faut qu'on sache si chaque requête imbriquée porte sur la même table ou pas, sur les mêmes colonnes ou pas etc.
    Il est peut être possible de ne faire qu'une seule requête en utilisant un CASE.
    Il suffit d'anonymiser les tables et colonnes sans dénaturer la requête pour qu'on puisse aider

  7. #7
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 963
    Par défaut
    Citation Envoyé par Stef67 Voir le message
    Lorsque j'execute cette query seule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select TOP 1 t1.val1  from table1 t1 where t1.arg  = 123456 order by t1.val2 desc
    Je n'ai aucun souci, mais si j'intègre cette meme query dans un enseble de select
    J'ai un message me signalant une erreur de syntaxe au niveau du TOP
    peut être écrire la valeur du TOP par parenthèse ... ?
    ou utiliser la fonction MAX et un group by ...

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

Discussions similaires

  1. [AC-2016] Erreur lors de l'execution d'une requête avec recordset ADODB
    Par CeluiQuiCherche dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 18/06/2020, 16h59
  2. [Google Sheets] Erreur lors de l'ajout d'une feuille avec fonction copier
    Par chile dans le forum APIs Google
    Réponses: 0
    Dernier message: 20/12/2019, 14h28
  3. [Python 2.X] Erreur lors de la création d'une formule avec xlwt
    Par Pythondelafournaise dans le forum Bibliothèques tierces
    Réponses: 4
    Dernier message: 26/09/2016, 16h13
  4. [MySQL] Erreur lors de la création d'une table avec mysql
    Par zemzoum89 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/05/2010, 01h03
  5. Erreur lors de l'exécution d'une requête avec ADOquery
    Par doolar dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/05/2008, 13h26

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