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 :

nb ligne résultat


Sujet :

SQL Firebird

  1. #1
    GMI
    GMI est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 13
    Points : 7
    Points
    7
    Par défaut nb ligne résultat
    Bonjour à tous,

    Je bosse actuellement avec php4 et interbase 6.0 et j'ai un probleme avec le fait qu'il n'y a pas de fonction pour connaitre le nombre de ligne résultat d'une requete en php

    j'ai donc écrit ma propre fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function ibase_num_rows($query) { 
       $result = BDSQL($query);
       $i = 0;
       while (ibase_fetch_row($result)) {
          $i++;
       }
       return $i;
    }
    cette fonction marche nikel pour des petites tables... malheuresement pour moi je travail avec des tables atteignant 15000 enregistrements.
    dans ce cas ma fonction devient beaucoup trop lente (et oui elle fait explosé les 30 secondes...)

    donc je me suis dis utilise lafonction sql COUNT(*) sur ta requete sa doit etre plus rapide... mais je viens de découvrir qu'on ne peut pas faire de SELECT dans un FROM avec interbase

    je ne vois pas de solutions "rapide" pour mon probléme? quelqu'un a t'il une solution?
    merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 109
    Points
    109
    Par défaut
    as tu essayé cette requete ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  COUNT(*) FROM TaTable
    Les deux mots les plus brefs et les plus anciens, oui et non, sont ceux qui exigent le plus de réflexion. "Pythagore"

  3. #3
    GMI
    GMI est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    SELECT COUNT(*) FROM TaTable
    merci...

    mais comme je l'ai dis dans mon message (enfin je crois) je ne veux pas simplement compter le nombre d'enregistrement sur une table (autrement je pense que j'y aurais déjà pensé...) mais je veux compter le nombre de résultat pour une requete SQL donc un truc du genre :

    SELECT COUNT(*) FROM MA_REQUETE


    mais interbase ne permet pas de mettre de select dans la clause where. j'ai aussi essayé de mettre un "count(nom_d'un_champ_selectionné)" dans la requete mais g une erreur sql:

    exmple de requete:
    "SELECT COUNT(*), tab1.champ1, tab1.champ2, tab1.champ3,..., tab2.champ1, tab2.champ2,... FROM tab1,tab2 WHERE tab1.champ1=tab2.champ1 ORDER BY tab1.champ3"

    erreur:
    Dynamic SQL Error SQL error code = -104 invalid column reference


    voila j'espere avoir été un peu plus clair...

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Si vous avez une requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Col1, Col2, Col3 from MaTable where Col3='Toto' and Col6>1000 and... etc...;
    Pour connaitre le nombre de ligne résultat sans devoir rapatrier toutes les données de cette requete il faut en effet faire un count.

    Mais on ne peux pas faire de sous-requete dans la clause FROM. Pres un from on ne peux mettre que des tables, des procédures stoquées et des vues.

    La solution la plus simple (il y en a d'autres en utilisant des PS ou en une requete plus complexe etc...) consiste à exécuter la requete suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Count(*) from MaTable where Col3='Toto' and Col6>1000 and... etc...;
    Donc il suffit de remplacer la partie entre le SELECT et le FROM :"Col1, Col2, Col3" par le count(*).

    Après il ne vous reste qu'à exécuter la requete pour récupérer les données.

Discussions similaires

  1. [XL-2003] masquage de lignes résultat aléatoire
    Par yveslbv dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/12/2010, 18h18
  2. Passage lignes résultats en colonne
    Par mr_keyser dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/03/2009, 08h37
  3. Concaténation de ligne-->résultat different sous linux et windows
    Par ramon.dekker dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 24/09/2008, 21h13
  4. Réponses: 1
    Dernier message: 24/05/2007, 16h05
  5. Réponses: 3
    Dernier message: 07/04/2006, 10h40

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