Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev > HyperFileSQL
HyperFileSQL HyperFileSQL est un système de gestion de base de données relationnel exploité par les logiciels WinDev, WebDev et WinDev Mobile.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/12/2012, 20h20   #1
android32
Invité régulier
 
Homme
Étudiant
Inscription : juillet 2012
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juillet 2012
Messages : 22
Points : 9
Points : 9
Par défaut demande optimisation si possible

bonjour
j'ai pu concevoir cette requête ci-dessous qui est fonctionnelle
je voudrais avoir votre avis concernant une possible optimisation,
la requête permet d'obtenir pour chaquelib_tabA son CA par mois sur une annee donnée
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT 
tableA.lib_tableA AS lib_tableA,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='01') THEN tableB.date.ca  ELSE  0  END) AS janvier,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='02') THEN tableB.date.ca  ELSE  0  END) AS FEVRIER,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='03') THEN tableB.date.ca  ELSE  0  END) AS MARS,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='04') THEN tableB.date.ca  ELSE  0  END) AS AVRIL,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='05') THEN tableB.date.ca  ELSE  0  END) AS  MAI,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='06') THEN tableB.date.ca  ELSE  0  END) AS JUIN,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='07') THEN tableB.date.ca  ELSE  0  END) AS JUILLET,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='08') THEN tableB.date.ca  ELSE  0  END) AS AOUT,
SUM(CASE WHEN (SUBSTR(tableB.date,4,2)='09') THEN tableB.date.ca  ELSE  0  END) AS SEPTEMBRE,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='10') THEN tableB.date.ca  ELSE  0  END) AS OCTOBRE,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='11') THEN tableB.date.ca  ELSE  0  END) AS NOVEMBRE,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='12') THEN tableB.date.ca  ELSE  0  END) AS DECEMBRE,
SUM(tableB.date.ca) AS total
FROM 
tableA,	
tableB
WHERE 
tableB.IDtableA	=	tableA.IDtableA
AND
(
LEFT(tableB.date,4) = {Param1}
)
GROUP BY 
tableA.lib_tableA
ps:avec l’éditeur d’état de windev j'ai eu quelques difficultés à obtenir les date(mois) en lettre
android32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 14h03   #2
frenchsting
Expert Confirmé
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 1 807
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 1 807
Points : 2 945
Points : 2 945
Si ta requête est fonctionnelle, n'y touche pas. Elle est lisible et en plus ne semble pas te poser de souci de temps de traitement.
__________________
Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
Pas de question par MP s'il vous plait. Le forum est fait pour cela...

Make it real not fantasy
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2013, 17h52   #3
wimbish
Membre Expert
 
Avatar de wimbish
 
Homme Christophe Vibert
Développeur informatique
Inscription : octobre 2006
Messages : 409
Détails du profil
Informations personnelles :
Nom : Homme Christophe Vibert
Âge : 39
Localisation : France, Manche (Basse Normandie)

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

Informations forums :
Inscription : octobre 2006
Messages : 409
Points : 1 043
Points : 1 043
Bonjour,

Je suis d'accord avec Claude, c'est propre, je ne suis pas sur que tu puisse optimiser ce code.

Tu peux cependant proposer ton post dans un forum dédier a SQL:
http://www.developpez.net/forums/f37...s/langage-sql/
__________________
Christophe.

Tous les chemins mènent à Rome http://doc.pcsoft.fr/fr-FR/
wimbish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 14h54   #4
michel.souris
Membre confirmé
 
Homme
Développeur informatique
Inscription : mars 2009
Messages : 209
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 209
Points : 260
Points : 260
Envoyer un message via MSN à michel.souris
Bonjour,

Je pense que tu pourrais faire quelque chose "de mieux" avec un GROUP BY ROLLUP si tu n'étais pas sous Hyperfile !

Pour le reste ta requête est logique... juste une jointure normalisée SQL2 serait plus sympa et peut-être qu'un sum(decode(to_char(tableB.date,'MM')='01',tableB.date.ca,0)) serait plus compact et plus clair....

Et juste une chose... étrange ce champ "tableB.date.ca" !
__________________
SQL : le véritable Esperanto
PHP/HTML/JS/CSS : et avec ça tu fais fessebouc !
Windev : ***** et **** parce que ***** même si ****** bien

"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
michel.souris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h36.


 
 
 
 
Partenaires

Hébergement Web