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

HyperFileSQL Discussion :

demande optimisation si possible


Sujet :

HyperFileSQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    34
    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 : 34
    Points : 37
    Points
    37
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 161
    Points : 9 111
    Points
    9 111
    Par défaut
    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 appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre éprouvé Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Points : 1 073
    Points
    1 073
    Par défaut
    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/

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    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

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script demande optimisation
    Par BUENOO dans le forum Général Python
    Réponses: 42
    Dernier message: 29/02/2012, 19h02
  2. Optimisation curieuse/possible de base de données ?
    Par Ekimasu dans le forum Optimisations
    Réponses: 4
    Dernier message: 25/05/2007, 17h21
  3. Réponses: 5
    Dernier message: 20/08/2006, 03h55
  4. Possible d'optimiser (Plusieurs querys en 1 seule)??
    Par MadCat34 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2005, 17h25
  5. Optimiser une requête..est-ce possible ?
    Par Thierry8 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/09/2005, 12h31

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