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

DB2 Discussion :

[DB2]requete avec 'LIMIT' ?!


Sujet :

DB2

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut [DB2]requete avec 'LIMIT' ?!
    Bonjour à tous,

    je souhaiterai utiliser la restriction LIMIT dans ma requete sql mais il n'en veut pas ni de ça ni de 'top' .

    Que puis-je utiliser ?

    Ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT LMBANO 
    FROM MILOMA 
    WHERE LMITNO='".$txtCdp."' 
    AND LMCONO=400 
    AND LMBANO LIKE  '".$annee."%' 
    ORDER BY LMBANO DESC 
    LIMIT 1,10
    Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT LMBANO 
    FROM MILOMA 
    WHERE LMITNO='".$txtCdp."' 
    AND LMCONO=400 
    AND LMBANO LIKE  '".$annee."%' 
    ORDER BY LMBANO DESC 
    FETCH FIRST 10 ROWS ONLY

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup !

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Y a-t-il un moyen de prendre les lignes 10 à 20 comme avec LIMIT ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ...
    FROM ...
    WHERE ...
    LIMIT 10,10

  5. #5
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Points : 655
    Points
    655
    Par défaut
    et pour les requêtes update ? est-ce possible de limiter la mise à jour à x enregistrements ?
    Et y a-t'il une syntaxe standardisée utilisable sur DB2 et sur MySQL ?

    merci d'avance

  6. #6
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par yellow_panther
    Bonjour,
    Y a-t-il un moyen de prendre les lignes 10 à 20 comme avec LIMIT ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ...
    FROM ...
    WHERE ...
    LIMIT 10,10
    Bonjour,

    Je me permets de reprendre ce post, car j'ai aussi le même problème.
    J'utilise TSO pour accéder à des bases sous DB2.

    Je dois lister tous les enregistrements d'une table, et TSO plante systématiquement si je monte la limite du nombre de résultats au-delà de 5000. Il y a un peu moins de 666 000 enregistrements.
    Je dois donc les récupérer par étapes (par paquets de 5000 par exemple).

    J'ai trouvé en cherchant les fonctions SetFetchSize() et SetMaxResults() qui ont l'air d'appartenir davantage à JAVA qu'au SQL de DB2. Je ne crois pas que je pourrai les utiliser, car le seul langage que j'utilise dans ce cas, c'est le SQL.

    Y a-t-il un équivalent de LIMIT n1,n2 en SQL chez DB2?

    Merci

  7. #7
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 286
    Points
    3 286
    Par défaut
    Citation Envoyé par DeLorbe
    ...
    Je me permets de reprendre ce post, car j'ai aussi le même problème.
    J'utilise TSO pour accéder à des bases sous DB2.

    Je dois lister tous les enregistrements d'une table, et TSO plante systématiquement si je monte la limite du nombre de résultats au-delà de 5000. Il y a un peu moins de 666 000 enregistrements.
    Je dois donc les récupérer par étapes (par paquets de 5000 par exemple).
    ...
    Quelque chose doit m'échapper car je vois mal l'interêt de lister une table de près de 700 000 lignes à l'écran, mais bon ...
    Sinon, sous TSO / SPUFI il y a un paramètre pour limiter le nombre de lignes retournées ...

  8. #8
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Luc Orient
    Quelque chose doit m'échapper car je vois mal l'interêt de lister une table de près de 700 000 lignes à l'écran, mais bon ...
    Sinon, sous TSO / SPUFI il y a un paramètre pour limiter le nombre de lignes retournées ...
    Salut,

    D'abord, merci pour ta réponse.

    Je précise : je veux récupérer tout ça pour en faire un tableau Excel, ce qui m'évitera d'avoir à faire à chaque fois la manipulation d'exportation, puis de mise en forme des résultats. C'est long, lourd, et on peut modifier la demande à chaque instant.
    Car ces données qu'on me demande ne sont jamais les mêmes, et font l'objet d'analyses a posteriori dans un tableau croisé, ou à l'aide de filtres divers.

    J'ai modifié le paramètre en question dans SPUFI, mais au-delà de 5000, il plante systématiquement.

  9. #9
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Il est possible d'utiliser une procédure stockée et un curseur:

    Voir ce post.

  10. #10
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 286
    Points
    3 286
    Par défaut
    Citation Envoyé par DeLorbe
    ...
    Je précise : je veux récupérer tout ça pour en faire un tableau Excel, ce qui m'évitera d'avoir à faire à chaque fois la manipulation d'exportation, puis de mise en forme des résultats. C'est long, lourd, et on peut modifier la demande à chaque instant ...
    Moi je ne ferais pas cela sous TSO / SPUFI.

    Je passerais par un job batch avec un DSNTIAUL qui permet d'écrire les données dans un fichier. La seule petite difficulté, c'est qu'il faut décoder les colonnes en DECIMAL et INTEGER en utilisant la fonction scalaire CHAR.

    En plus, avec une petite astuce, on peut même générer le séparateur ';' entre les colonnes extraites ce qui permet à EXCEL de reconnaitre le fichier comme de type CSV et de faire l'import en un seul clic

    Question : un fichier issu d'une table de 700 000 lignes ce n'est pas trop gros pour EXCEL ?

  11. #11
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Citation Envoyé par Luc Orient
    Question : un fichier issu d'une table de 700 000 lignes ce n'est pas trop gros pour EXCEL ?
    Bien vu. Il me semble que la limite est de l'ordre de 65000

  12. #12
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Salut,

    En effet, c'est ce que j'ai vu vendredi : c'est trop gros pour un fichier Excel.
    En plus, cette base est mise à jour quotidiennement, il faudrait donc que je refasse la manip régulièrement pour récupérer les nouvelles entrées.

    Résultat : je lâche l'affaire, je ferai des requêtes à la demande.
    J'ai revu toute la procédure, j'exporte les résultats de la requête dans un fichier texte, qu'il faut que je retouche un peu avant de l'importer dans Excel.
    Ensuite, je fais le nettoyage sous Excel, c'est assez rapide.

    Mais je vais quand même voir vos solutions de plus près, pour ma culture perso.
    Pour le DSN ça va être chaud : c'est une banque, et l'accès des utilisateurs est ultra restreint. ême un DSN utilisateur, je ne pense pas qu'on me ferait ça.
    Je vais voir quand même.

    Merci à tous pour vos réponses et pour votre aide

    Nico

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 63
    Points
    63
    Par défaut
    Perso,

    Pour mes statistiques et rapports sur mes databases DB2 , j'utilise ACCESS.
    La DB une fois définie en OBDC, je link les tables et je peux les utliser comme des tables ACCESS dans des queries ACCESS.
    Les fonctions macros , formulaires et rapports sont alors disponibles.

    Il m'arrive même d'y faire des updates.

    Fini la limitation de 65000

  14. #14
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Citation Envoyé par ALHER
    Perso,

    Pour mes statistiques et rapports sur mes databases DB2 , j'utilise ACCESS.
    La DB une fois définie en OBDC, je link les tables et je peux les utliser comme des tables ACCESS dans des queries ACCESS.
    Les fonctions macros , formulaires et rapports sont alors disponibles.

    Il m'arrive même d'y faire des updates.

    Fini la limitation de 65000
    De même, pour des requêtes ponctuelles, j'utilise volontier Access.

Discussions similaires

  1. requete avec limit
    Par sony351 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/04/2010, 21h48
  2. [MySQL] Requete avec LIMIT refusée
    Par HAbroc dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 07/12/2009, 20h27
  3. Requete avec limite pour chaque valeur du IN
    Par grunge0 dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/09/2009, 14h00
  4. problème avec une requete utilisant LIMIT
    Par kow_Ced dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/08/2006, 16h01
  5. Limiter les affichages d'une requete avec POstgre
    Par jenny50 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/01/2006, 16h26

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