Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 08/01/2005, 00h58   #1
Invité régulier
 
Inscription : juin 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 12
Points : 5
Points : 5
Par défaut [Resolu]Aide pour une requete SQL

Hello tout le monde,

J'aimerai savoir s'il est possible de creer une requete sql qui réalise le "comptage" de nombre de champ qui ont une valeur déterminée.

Je m'explique.

j'ai une table inscription, avec les champ suivant :

code_activite | code_client | desinscription | validite | prix | periode |
205 | 150 | FALSE | TRUE | 75 | 1
125 | 875 | FALSE | TRUE | 150 | 1
125 | 70 | TRUE | TRUE | 98,20 | 2
205 | 120 | FALSE | FALSE | 100 | 3

J'aimerai que pour chaque code_activite obtenir :
- le nombre de client inscrit
- le nombre de desinscription FALSE
- le nombre de desinscription TRUE
- le nombre de validite TRUE
- le nombre de validite FALSE
- la recette des inscriptions (SUM(prix))
- le nombre de personne inscrit en periode 1, 2 ou 3

j'arrive à le faire avec une requete par objectif, mais j'aimerai savoir si je peux faire plus optimisé. Si la solution est de passer en procedure stocké et de renvoyé une table correspondant à mes objectifs, je sais egalement le faire. Mais peut on faire autrement ?

Merci pour votre aide.
A+

ps : langage sql : postgresql 7.4.1 (plpgsql actif)
hpghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2005, 11h56   #2
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Par défaut Re: Aide pour une requete SQL

Bonjour,

Citation:
Envoyé par hpghost
j'arrive à le faire avec une requete par objectif, mais j'aimerai savoir si je peux faire plus optimisé. Si la solution est de passer en procedure stocké et de renvoyé une table correspondant à mes objectifs, je sais egalement le faire. Mais peut on faire autrement ?
Tu as cité les deux seuls méthodes possibles à ma connaissance. La première est la plus optimisé : tu ne calcules que la donnée dont tu as spécifiquement besoin. La deuxième est la plus lourde (elle cumule tous les calculs), mais nécessite une seule requête pour obtenir tous les résultats.

Tu peux fusionner les deux approches : faire une procédure stockée pour chaque champ et créer une procédure stockée renvoyant tous les résultats et dont le code fera appel à toutes les procédures stockées individuelles.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2005, 11h56   #3
Membre éclairé
 
Avatar de piff62
 
Inscription : décembre 2003
Messages : 431
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : décembre 2003
Messages : 431
Points : 362
Points : 362
Pour la premiere par exemple :
Code :
1
2
 
SELECT count(code_client) AS nbClient FROM nomTable GROUP BY code_activite;

Te donnera bien le nombre de client par code d'activite non ?
piff62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2005, 15h01   #4
Invité régulier
 
Inscription : juin 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 12
Points : 5
Points : 5
Effectivement,

mais ce que je recherchai c'est pourvoir compter ou additionner tout mes champs selon leur valeurs...

Merci pour vos réponses. Je vais donc m'orienté vers les procedures stockés.

Bonne journée. A+
hpghost 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 07h05.


 
 
 
 
Partenaires

Hébergement Web