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 :

SOS Db2 !!


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Points : 40
    Points
    40
    Par défaut SOS Db2 !!
    Salut tout le monde, je travail sur un projet et je suis bloqué sur une requete concernant DB2 sur AX400

    Mon probleme c que je veux afficher un nombre limité d'enregistrements cad utliser Limit qui existe ds MySql mais ds Db2 j trouver que:
    select * from tatable FETCH FIRST 5 ROWS ONLY
    or moi je veux afficher par exemple les enregistrements du 15 au 20 par exemple !!

    SVP de l'aide c vraiment tres tres important pour moi

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Il existe 1 fonction 'rechercher' qui marche avec tous les SGBD.

    comment rechercher les derniers enregistrement d'une table ?
    http://www.developpez.net/forums/vie...255906#2255906
    select de n en n
    http://www.developpez.net/forums/vie...243880#2243880
    disponibles rien que sur la 1ere page du forum

    Citation Envoyé par maximus001ma
    SVP de l'aide c vraiment tres tres important pour moi
    Comme dit le proverbe : aides-toi ...

    A +

  3. #3
    Membre habitué Avatar de souellet
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 155
    Points : 171
    Points
    171
    Par défaut
    Youppi! On parle le même langage.

    J'ai une question: Pourquoi faire une requête qui t'apporte un certain nombre d'enregistrement et que tu veux seulement les 5 en partant de l'enregistrement x?

    Ne peux-tu pas être plus spécifique dans ta clause WHERE?

    Sinon ce que je vois, c'est d'utiliser un curseur.

    Donne plus de détail sur ta requête et tu devrais avoir des réponses assez rapide.

    Prend bien soin de lire les règles du forum (SOS ou URGENT... dans un sujet exemple). Ça va aider à te faire répondre rapidement et le monde du forum vont rester cool 8) !

    Au plaisir

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 554
    Points
    19 554
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ... 
    FROM X
    WHERE RRN(X)  BETWEEN n AND m
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Membre habitué Avatar de souellet
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 155
    Points : 171
    Points
    171
    Par défaut
    Malheureusement en DB2 AS/400, le RRN ne peut servir à déterminer le numéro du record dans la requête select. Ça aurait été trop beau!

    Le RRN est un numéro déterminé lors de la création du record dans la table.

    Donc dans une requête comme;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT RRN(X), CLE1, CLE2
    FROM X 
    WHERE RRN(X)  BETWEEN n AND m
    ORDER BY CLE1,CLE2
    on peut avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RRN           CLE1    CLE2
    -----------   ------  ----  
    1,617,759     88850         
    1,583,578     88850    1 
    1,583,579     88850    2
    J'aimerais bien qu'IBM pense à mettre une fonction qui retourne le RRN du record d'un SELECT un jour!

  6. #6
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Merci tout le monde pour votre aide mais voila j'ai encore le meme probleme car comme ma table est vraiment enorme je me pose la question:
    qui sera plus performant utiliser une requete imbriquée ou bien utliser a notion de curseur sachant que j'utilise une architecture n tiers et j'aurais plusieurs utilisitateurs en meme temps !!

    La moindre information ca pourra bcp m'aider

  7. #7
    Membre habitué Avatar de souellet
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 155
    Points : 171
    Points
    171
    Par défaut
    J'ai eu les mêmes problèmes avec une requête qui me donnait du trouble de performance.

    J'ai réussi à l'améliorer en utilisant Visual Explain de ISeries Client Acces.
    Il permet de voir les index temporaires qu'il a du créer, les tables temporaires...

    Par la suite, j'ai travaillé sur les index, StoredFunction et jointure afin d'améliorer les performances.

    J'ai même ajouter de la mémoire et des disques sur le AS/400, mais ça c'est un peu plus chère!

    Bonne chance

  8. #8
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    oui mais selon vous qui sera plus optimal: utliser une requete imbriqué ou bien utiliser un curseur !!

  9. #9
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Si, comme je le crois tu veux utiliser 1 rang pour que l'utilisateur fasse défiler page aprés page le résultat de la requête, la solution SQL sur 1 grosse table risque de surcharger ton serveur de données.
    Mais la vider tte la table, puis faire le tri apres ds ton appli. ça va couter cher en mémoire sur ton serveur appli. surtout si, au bout du compte, tu n'affiches que 1 page ou 2.
    En gros je dirais que :
    - tu veux lister tte la table : "select *" et tu fais le tri et ds ton appli.
    - tu ne liste que qques pages, ou des pages disjointes, utilise la solution SQL.

    Dsl si je semble dire des évidences, mais tu ne donnes aucun détail, la réponse est forcément peu détaillée.

    A +

Discussions similaires

  1. SOS pour optimiser ma requete sous DB2
    Par xibaarinfo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/08/2007, 18h18
  2. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  3. [CHOIX]interbase, postgreSQL ou DB2?
    Par biohazard dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 28/03/2003, 14h41
  4. [Comparatif] DB2, Oracle et SQLServer
    Par Laurent MALAVASI dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 25/10/2002, 12h26
  5. [DB2] Au sujet de...
    Par Eric Denné dans le forum DB2
    Réponses: 2
    Dernier message: 16/09/2002, 19h21

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