Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2007, 15h28   #1
Membre du Club
 
Avatar de Moine
 
Inscription : mars 2006
Messages : 172
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 172
Points : 44
Points : 44
Par défaut [FB 1.5] compter le nombre lignes

Salut !!

J'ai une table avec beaucoup de ligne. Je veux recuperer ces lignes et les mettre dans un combobox. Pour cela j'ai besoin de connaitre le nombre de ligne et les informations de ces lignes. Si je fais
Code :
1
2
 
 SELECT count(*) FROM ma_table WHERE id IS NOT NULL
et
Code :
SELECT nom_champ FROM ma_table WHERE id IS NOT NULL
tout marche bien. Voulant optimiser cette requête j'ai fais:
Code :
 SELECT count(*),nom_champ FROM ma_table WHERE id IS NOT NULL
là FB affiche SQL affiche SQL dynamic error -104 user name required.

Merci de me dire ce qui ne va pas dans ma requête.
Moine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 15h57   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Citation:
Voulant optimiser cette requête
Je ne suis pas certain que tu optimises quoi que ce soit, au contraire surtout en terme d'octets transférés...
Ainsi, au lieu de ramener
- 1 ligne avec le count
ou
- les seules occurrences de nom_champ

c'est un tableau de 2 colonnes x nb d'occurrences de nom_champ qui doit être élaboré par le moteur relationnel, puis ramené vers le client.

Bref, tu doubles le travail grâce à cette optimisation
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 16h52   #3
Membre du Club
 
Avatar de Moine
 
Inscription : mars 2006
Messages : 172
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 172
Points : 44
Points : 44
Par défaut [FB 1.5]compter le nombre ligne

Je suis d'accord avec toi je vais revenir à l'ancienne manière. Mais tu ne me dis pas pourquoi la requête ne marche pas? maintenant c'est ça qui m'interesse.
Moine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 20h41   #4
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 324
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 324
Points : 4 785
Points : 4 785
Et ca?

SELECT count(*), nom_champ
FROM ma_table
WHERE id IS NOT NULL
GROUP BY nom_champ
_skip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 14h29   #5
Membre du Club
 
Avatar de Moine
 
Inscription : mars 2006
Messages : 172
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 172
Points : 44
Points : 44
Par défaut [FB 1.5] compter le nombre de ligne

ça marche mais ça compte le nombre d'occurrence de chaque élément pas le nombre d'enregistrement. Je voudrais recuperer tous les enregistrements et le nombre total d'enregistrement en utilisant une seule requête. Avec deux requêtes j'arrive à le faire facilement. Je voudrais fusionner ces deux requêtes. Si quelqu'un peut m'aider.
Moine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 10h02   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Les fonctions Count, sum, max, etc réclament un group by pour qu'il sache quel ensemble compter ou sommer (le groupe).

Sans le group by ces fonctions considèrent que l'ensemble c'est tout le select (donc un seul ensemble). C'est comme si on faisait un group by suivit de la liste complete des colonnes (ou de la clé primaire).

Faire un count retourne une seule ligne par ensemble.

On voit bien là qu'il y a un probleme, le count veut retourner une ligne et le nom_champ voudrait ramener X lignes...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 10h56   #7
Membre du Club
 
Avatar de Moine
 
Inscription : mars 2006
Messages : 172
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 172
Points : 44
Points : 44
Par défaut compter le nombre lignes

Super Barbibulle. C'est l'explication que je voulais. Je crois que tu viens de me la

donner. Merci mille fois man.
Moine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h32.


 
 
 
 
Partenaires

Hébergement Web