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

Oracle Discussion :

Return a "costum" table from a sql query


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut Return a "costum" table from a sql query
    Salut tout le monde !
    J'ai un problème lors d'un travail sur l'extraction de données de la DB
    l'idée c'est que à partir des deux dates sélectionnées par le user je recupère la liste des jours (dayItems) situés dans la marge + des données COUNT ayant chaque jour (dayItem) comme paramètres, le tableau resultant rassemble à ceci :
    DAY SOMME(data1) SOMME(data2)
    23/04/2012 5 8
    24/04/2012 9 7
    25/04/2012 41 0
    26/04/2012 8 11
    27/04/2012 0 15
    ............... .. ..
    j'ai arrivé à récupérer la liste dans la marge sélectionnée par le code ci-dessous :
    select to_date('23/04/2012','dd/MM/yyyy') -1 + level as DateRange from dual where (to_date('01/04/2012','dd/MM/yyyy') -1 + level ) <= to_date('30/04/2012','dd/MM/yyyy') connect by level < 50
    le query de la somme qui utilise chaque element (jour) est comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
     "select count(*) FROM Product p, 
                + " AND p.status = 5 "
                + " AND p.dateProduction = (dayItem) ";
    Le problème c'est que je ne peux pas terminer le query en exploitant chaque élément de la liste pour récupérer la somme selon chaque jour et créer le tableau résultant dans la query général !

    Pouvez-vous m'aidez sur ce point ?

    Merci bcp d'avance !

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    L'idée c'est de faire une jointure externe entre votre bout de calendrier et votre table :
    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
    With Calendrier as
    (
        select to_date('23/04/2012','dd/mm/yyyy') -1 + level as DateRange
          from dual
         where to_date('01/04/2012','dd/mm/yyyy') -1 + level <= to_date('30/04/2012','dd/mm/yyyy')
    CONNECT by level < 50
    )
      select cal.DateRange
           , count(prd.<pk>)
        from Calendrier cal
             left outer join Product prd
               on prd.dateProduction = cal.DateRange
              and prd.status = 5
    group by cal.DateRange
    order by cal.DateRange asc;
    J'ai du mal à comprendre la plage que vous récupérez avec votre calendrier.
    Vous partez d'aujourd'hui (mais sans utiliser sysdate) pour une durée du nombre de jours du mois en cours avec une limite à 50.

    Ça me paraît bien complexe si vous pouviez préciser votre souhait.

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