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 :

[Access] Problème SQL SELECT LIMIT


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut [Access] Problème SQL SELECT LIMIT
    Bonjour à tous,

    Je voudrais afficher un certains nombre de videos par page.
    Donc je voudrais bien utiliser l'opérateur LIMIT en SQL mais pas moyen...

    Voici la requête qui pose problème :

    (dans une page ASP)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT * FROM [base] WHERE [type]='"&typepost&"' ORDER BY [datepost] DESC"
    Lorsque, pour tester, je rajoute LIMIT 10 , 15 par exemple pour afficher les résultats de 10 à 15 comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT * FROM [base] WHERE [type]='"&typepost&"' ORDER BY [datepost] DESC LIMIT 10 , 15"
    Et bien je reçois une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
     
    [Microsoft][ODBC Microsoft Access Driver] Syntax error in ORDER BY clause.
     
    /oxy240/videos.asp, line 49
    J'ai essayé de placé ce LIMIT autre part dans la requête et impossible, j'ai toujours une erreur de syntaxe...

    Comment faire ? Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 318
    Points
    318
    Par défaut
    Bonjour, qu'est ce que tu veux dire par [base], si ça signifie la base de donnée alors le problème vient de là, par ce que tu dois mettre le nom de la table non le nom de la base de donnée, ok.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Non non, [base] est bien le nom de ma table.

    La requête marche parfaitement si je retire le LIMIT 10 , 15

  4. #4
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 318
    Points
    318
    Par défaut
    Bonjour, je ne sais pas vraiment , mais peut être que la table ne comptient pas assez d'enregistrement.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    La table en question comprends 19 enregistrement qui sont sélectionnés parfaitement sans ce LIMIT.

    Dès que j'impose un LIMIT ça bug et hop erreur erreur de syntaxe

    Je suis en train de me demander : est-ce que cela ne pourrait pas venir du serveur qui ne prend pas en charge l'opérateur ?
    J'ai lu quelque part LIMIT n'était pas au standard SQL.

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 103
    Points : 28 394
    Points
    28 394
    Par défaut
    Citation Envoyé par oxygen240
    J'ai lu quelque part LIMIT n'était pas au standard SQL.
    En effet, LIMIT, TOP ou FIRST ne font pas partie des mots clés du standard SQL.

    Tu ne précises pas le SGBD que tu utilises. Je suppose, à la lecture des messages d'erreur, que c'est ACCESS.
    Access ne prend pas en charge LIMIT

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Oui en effet, j'avais oublié de précisé que c'était une base Access.

    Donc il n'y a aucun moyen de sélectionner un certain nombre d'enregistrements au milieu de la table ?

    Si non, je vais devoir coder la fonction moi même...


    Edit : Ok, je l'ai codée moi-même, bon elle est pas universelle mais ça ira pour mon site

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Quelle fonction?
    Bonjour,

    Je suis intéressé par ta fonction équivalente au LIMIT sous Access. Pourrais-tu la faire partager, s'il te plait?

    Cordialement,

    Martin

  9. #9
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Il me semble qu'on doit utiliser TOP ,avec ODBC:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 10 * from .....
    .... LIMIT 10 ne fonctionne pas sur ODBC.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 22
    Points : 25
    Points
    25
    Par défaut
    Top, c'est bien beau, mais si on a besoin d'enregistrement au milieu d'une table, on est obligé de se taper tous les enregistrements qui sont avant ???

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    J'apporte ma modeste contribution, ayant passé un bonne partie de la matinée à chercher un équivalent au LIMIT de MySQL.

    Je ne sais pas si c'est très "pro" mais, à défaut d'avoir trouvé mieux on fait avec.

    Un exemple avec tri sur le numéro de client (du plus petit au plus grand) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT NUMLIGNE, NUMCLIENT 
     
    FROM (SELECT T_SOCIETE.NUMCLIENT, COUNT(T1.NUMCLIENT) AS NUMLIGNE 
              FROM (SELECT NUMCLIENT 
                        FROM T_SOCIETE) AS T1,  T_SOCIETE 
     
              WHERE T1.NUMCLIENT<=T_SOCIETE.NUMCLIENT 
              GROUP BY T_SOCIETE.NUMCLIENT) AS T2 
     
    WHERE T2.NUMLIGNE BETWEEN 1 AND 200 ORDER BY NUMLIGNE ASC;
    Un autre avec tri par nom de société (de Z à A) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT NUMLIGNE, NOM 
     
    FROM (SELECT T_SOCIETE.NOM, COUNT(T1.NOM) AS NUMLIGNE 
             FROM (SELECT NOM 
                       FROM T_SOCIETE) AS T1,  T_SOCIETE 
     
             WHERE T1.NOM>=T_SOCIETE.NOM 
             GROUP BY T_SOCIETE.NOM) AS T2 
     
    WHERE T2.NUMLIGNE BETWEEN 1 AND 200 ORDER BY NUMLIGNE ASC;
    Allez, à la revoyure.

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

Discussions similaires

  1. Problème SQL, Select plusieurs tables
    Par clemref59 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/03/2014, 14h14
  2. [ODBC] PHP et access problème SQL
    Par dr_feelgood dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/10/2009, 17h45
  3. Problème requete SQL SELECT avec access
    Par cactus666 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/12/2007, 12h46
  4. problème de selection automatique sous access...
    Par Moustique67 dans le forum Access
    Réponses: 4
    Dernier message: 29/11/2005, 00h33
  5. Problème Access to Sql Server
    Par vuldos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/08/2004, 15h56

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