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

SQL Firebird Discussion :

selectionner n lignes


Sujet :

SQL Firebird

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 6
    Points
    6
    Par défaut selectionner n lignes
    Salut

    Je voulais savoir comment faire sous IB pour sélectionner par exemple de la ligne 4 à la ligne 10.
    Or les fonctions 'limit' et 'top' n'existe pas sous IB.

    Cdlt

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    A vue de nez, j'utiliserais une procédure stockée, avec une boucle et une variable incrémentée, du style :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FOR SELECT <Ma requete> INTO <Mes valeurs à renvoyer>  DO
    BEGIN
      i = i + 1
      IF (i>10) THEN EXIT;
      IF (I>= 4) THEN SUSPEND;
    END;
    Mais je ne suis pas un pro A tester;

    Roland
    Roland

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse

    L'inconviénient de cette méthode c'est que je lis tout de même tous les données de la table ce qui est assé volumineux.

    Cdlt

  4. #4
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Non, du moins si j'ai bien compris la réponse que Barbibulle m'avait donnée.(cf Sujet : "Tester si une table est vide").

    Le For... semble ramener la requête ligne par ligne, et le sort de la procédure après la 10ème ligne.

    Roland
    Roland

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Aurais-tu un code source de la requête et de son utilisation a m'envoyer car je ne vois pas du tout comment ca pourrais marcher.

    Desolé

    Cdlt

  6. #6
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE PROCEDURE  EXTRAITLIGNES (Debut INTEGER, Fin INTEGER)
    RETURNS (Valeur1 INTEGER,  Valeur2 VARCHAR (10))
     AS
    DECLARE VARIABLE i INTEGER;
    BEGIN
      i = 0;
      FOR SELECT Champ1, Champ1 FROM MATABLE
             INTO :Valeur1, :Valeur2 DO 
      BEGIN /* Pour chaque ligne de la requête, les valeurs des champs sont   stockées dans les valeurs à retourner*/
        i = i  + 1; /*i prend le n° de la ligne */
        IF i > :Fin THEN EXIT; /* Si mon n° de ligne est supérieur à la limite  passée en entrée, on arrête */
        IF i >= :Debut THEN SUSPEND;/*Sinon, s'il est au moins égal à la limite inférieurs, je renvoie mes deux champs */
      END
    END
    J'espère ne pas avoir fait (trop) de fautes !

    Tu crées ta procédure dans ta base, ensuite, pour l'appeler, comme elle renvoie plusieurs lignes, je crois qu'il faut que tu utilises un composant style TIBQuery, avec une SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE PROCEDURE EXTRAITLIGNES 4 10 RETURNING_VALUES Valeur1 Valeur2
    (qqs variantes entre SQL, ISQL, etc voir Aide Interbase.

    N.B. : As-tu lu le tutoriel "Procédures stockées" (Annonce un plu plus haut dans le forum) ? Il m'a beaucoup aidé

    Essaie et tiens-moi au courant

    Cordialement

    Roland
    Roland

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    merci beaucoup je vais tester et adapter au php

    Je dirais si ca marche

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    en firebird 1.5, le next et top existent: FIRST et SKIP, Pex:

    donnera les 10 premiers enregistrements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FIRST 10 SKIP 10 champ1, champ2, champ3 FROM TaTable

Discussions similaires

  1. [VB.net] selectionner une ligne DataGrid
    Par MichMich29 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 31/05/2007, 20h36
  2. une requête qui selectionne la ligne max
    Par kuhnden dans le forum Access
    Réponses: 3
    Dernier message: 01/11/2005, 18h39
  3. selectionner une ligne au hasard dans une table
    Par dark_vidor dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/06/2005, 12h01
  4. Réponses: 6
    Dernier message: 24/01/2005, 11h06
  5. [JEditorPane]Selectionner une ligne
    Par )3lade dans le forum Composants
    Réponses: 8
    Dernier message: 20/01/2004, 10h29

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