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

Développement SQL Server Discussion :

Requête SQL pour ACCESS problème de compatibilité pour certaines instructions ?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut Requête SQL pour ACCESS problème de compatibilité pour certaines instructions ?
    Bonjour à toutes et à tous,

    Je rencontre un problème lors de la compilation d'un code SQL,
    mais étant sûr de l'orthographe de ma requête je pense que c'est un problème de compatibilité car je le travail sous ACCESS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *, COUNT(DISTINCT date_1), MAX(date_1), MIN(date_1)
    FROM ma_table 
    WHERE date_1 LIKE '%blablabla%' 
    GROUP BY colonne1, colonne2
    Et il me renvoie comme message d'erreur :

    - "Fonction 'DISTINCT' non définie dans l'expression."
    quand je met des parenthèses à date ----> COUNT(DISTINCT (date_1))

    - "Erreur de syntaxe (opérateur absent) dans l'expression 'COUNT(DISTINCT date_1)'."
    quand il n'y a pas les parenthèses ----> COUNT(DISTINCT date_1)

    Je n'ai pas trouver de topiques traitant de ce sujet.
    Pouvez-vous m'en dire plus, avez-vous des idées à propos de ce genre de problème ?

    En vous remerciant d'avance.

    ps : date_1 est tout simplement une colonne alimenté de date.

  2. #2
    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
    Je n'ai pas bien compris :
    C'est une requête qui fonctionne sous Access mais pas SQL Server ?
    C'est une requête qui fonctionne sous SQL Server mais pas Access ?
    C'est une requête exécutée depuis Access sur une base SQL Server ?
    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.

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Bonjour,

    Je travail sous VBA, cette requête a pour but d'alimenter un RecordSet depuis des données enregistrées sous ACCESS.
    La requête fonctionne avec SQL SERVER (j'ai tester pour être sûr de la syntaxe) mais elle ne fonctionne pas en tant que requête sur ma table ACCESS.

  4. #4
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Je viens d'essayer ma requête en enlevant le GROUP BY et les DISTINCT, MAX, MIN et tout fonctionne parfaitement, d'où l'idée que je pense que ACCESS ne prend pas en compte ces instructions.

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT colonne1, colonne2, count(date_1), Min(date_1), Max(date_1) 
    FROM ma_table
    WHERE date_1 like '%blablabla%'
    GROUP BY colonne1, colonne2
    J'ai trouvé cette solution si quelqu'un rencontre le même problème, il y avait un soucis au niveaux du SELECT * à la place il faut mettre les mêmes colonnes que ton GROUP BY et préférer COUNT * à COUNT(DISTINCT(date_1) car la double instruction ne marche apparemment pas.

    A plus

  6. #6
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Je viens de voir ta réponse un peu tard, merci d'avoir pris le temps de répondre en tout cas je comprends mieux pourquoi ce code n'avait pas fonctionné.
    Bonne soirée

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par v4ss73r Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT colonne1, colonne2, count(date_1), Min(date_1), Max(date_1) 
    FROM ma_table
    WHERE date_1 like '%blablabla%'
    GROUP BY colonne1, colonne2
    J'ai trouvé cette solution si quelqu'un rencontre le même problème, il y avait un soucis au niveaux du SELECT * à la place il faut mettre les mêmes colonnes que ton GROUP BY et préférer COUNT * à COUNT(DISTINCT(date_1) car la double instruction ne marche apparemment pas.

    A plus
    Je suis désolé, mais votre solution est à bannir !
    Résoudre des problèmes d'ordre syntaxique SQL c'est une chose, finir avec des régressions fonctionnelles, c'est empirer la situation !
    En effet, les 2 clauses SELECT, ci-dessous, sur le plan purement fonctionnel, ne donneront pas forcément le même résultat, notamment pour la 3ème colonne ( COUNT(date_1) vs COUNT(DISTINCT date_1) ) !!!
    Leur résultat sera identique uniquement, si par exemple, la colonne date1 est NOT NULL et représente une clé unique de la table Ma_Table. Est-ce vraiment le cas (?).
    Les résultats pour les colonnes colonne1, colonne2, MAX(date_1), et MIN(date_1) ) seront en revanche exactement identiques pour les deux formes de SELECT.
    Donc attention aux régressions fonctionnelles lors de la traduction sous ACCESS !

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT colonne1, colonne2, COUNT(date_1), MAX(date_1), MIN(date_1)
    FROM ma_table 
    WHERE date_1 LIKE '%blablabla%' 
    GROUP BY colonne1, colonne2

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT colonne1, colonne2, COUNT(DISTINCT date_1), MAX(date_1), MIN(date_1)
    FROM ma_table 
    WHERE date_1 LIKE '%blablabla%' 
    GROUP BY colonne1, colonne2

    A+

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par v4ss73r Voir le message
    - "Fonction 'DISTINCT' non définie dans l'expression."
    quand je met des parenthèses à date ----> COUNT(DISTINCT (date_1))
    DISTINCT n'est pas une fonction. Donc cette syntaxe est illégale.
    - "Erreur de syntaxe (opérateur absent) dans l'expression 'COUNT(DISTINCT date_1)'."
    quand il n'y a pas les parenthèses ----> COUNT(DISTINCT date_1)
    Cette syntaxe est en revanche parfaitement légale.
    Je n'ai pas trouver de topiques traitant de ce sujet.
    Pouvez-vous m'en dire plus, avez-vous des idées à propos de ce genre de problème ?

    En vous remerciant d'avance.

    ps : date_1 est tout simplement une colonne alimenté de date.
    ACCESS dispose d'un niveau de SQL rudimentaire et peu normatif au contraire de SQL Server....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Aide pour requête SQL sous Access
    Par la bulle dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 05/05/2009, 08h16
  2. Problème de compatibilité pour mon menu déroulant
    Par tidus_6_9_2 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 29/01/2008, 14h29
  3. Problême requête SQL dans access..Erreur 3079
    Par DavidGG dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/01/2008, 17h48
  4. Problème requêtes SQL sur Access 2007
    Par Moroccan dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/02/2007, 13h29
  5. Problème de compatibilité pour [style="width:100%;] sur
    Par Furius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/01/2006, 17h19

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