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

SQL Oracle Discussion :

[9,10] Vues avec Paramètres à passer


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Par défaut [9,10] Vues avec Paramètres à passer
    Bonjour,

    je fantasme peut être...mais je me demande si Oracle saurait faire ça, un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Create View myView
    select * from matable where typdos = :1;
    puis l'utiliser comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from myView using 'TEST';
    bon c'est vraiment pour illustrer mon principe (ne me flinguer pas !)

    si vous avez des idées merci

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from mavue where typdos='TEST';


    que cherchez-vous à faire ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Par défaut
    oui c'était previsible en fait voilà la vue (à vouloir faire trop simple...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Select 'ANNUEL',typdos,count(*),to_char(current_date, 'YYYY'),''
    from gpc_entdos
    where datdep >= to_date('01/01/' || to_char(current_date, 'YYYY'),'dd/mm/yyyy')
    group by typdos 
     
    union 
     
    Select 'PERIODE',typdos,count(*),to_char((NEXT_DAY(SYSDATE, 'WED') - 13),'dd/mm/yyyy'),to_char(SYSDATE,'dd/mm/yyyy')
    from gpc_entdos
    where datdep >= (NEXT_DAY(SYSDATE, 'WED') -7)
    group by typdos
    ca sert à sortir un tableau unique avec le nombre de dossiers par type depuis le début de l'année et depuis le jeudi de la semaine précédente.

    en fait, on voudrait adapter cette vue pour permettre de spécifier la date de départ de la requête 'PERIODE' avec une date définit au cas par cas dans la requête sur la vue.

    a la question mais pourquoi ne pas le faire côté appli, je répondrai que je n'ai maitrise absolument pas l'appli qui fonctionne en ODBC avec VB5 et n'accepte pas UNION donc impossible de mettre cette requête côté appli (juste un pauvre Select ... where ... group ... order ... passe correctement)

    Je ne sais pas si je me fais bien comprendre

    merci de votre aide

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Pour info : remplace UNION par UNION ALL. UNION fait un DISCTINCT alors que dans le cas présent tu ne peux pas avoir de doublons... donc un tri pour rien

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Par défaut
    Merci pour l'info, je note.

    pas une ptite idée pour mon problème ?

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    peux-tu réécrire la requête en positionnant une variable là où tu veux, parce que j'ai pas bien compris

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    SELECT 'ANNUEL',typdos,count(*),to_char(current_date, 'YYYY'),''
    FROM gpc_entdos
    WHERE datdep >= to_date('01/01/' || to_char (current_date, 'YYYY'),'dd/mm/yyyy')
    GROUP BY typdos 
     
    union all
     
    SELECT 'PERIODE',typdos,count(*),to_char((NEXT_DAY(SYSDATE, 'WED') - 13),'dd/mm/yyyy'),to_char(SYSDATE,'dd/mm/yyyy')
    FROM gpc_entdos
    WHERE datdep >= "VARIABLE_MA_DATE"

  8. #8
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Et bien crée ta vue comme ça :

    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
    SELECT 'ANNUEL',
                         typdos,
                         count(*),
                         to_char(current_date, 'YYYY'),
                         '', 
                         datdep datdep_ann,
                         '' datdep_per
    FROM gpc_entdos
    WHERE datdep >= to_date('01/01/' || to_char (current_date, 'YYYY'),'dd/mm/yyyy')
    GROUP BY typdos 
    union ALL
     SELECT 'PERIODE',
                 typdos,
                 count(*),
                 to_char((NEXT_DAY(SYSDATE, 'WED') - 13),'dd/mm/yyyy'),
                 to_char(SYSDATE,'dd/mm/yyyy'),
                 '' datdep_ann,
                 datdep datdep_per
    FROM gpc_entdos
    Et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM ma_vue
    WHERE datdep_per >= "VARIABLE_MA_DATE"
    non ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Par défaut
    hum...

    ds la 2ème requête pour faire le count(*) il faut un group by

    si tu rajoutes le champ datdep tu dois le mettre ds le group by

    à ce moment là comme les dossiers sont déposés à des jours différents tu as des comptes par date et type de dossier et plus seulement par type de dossier

    c'est pour ça que j'imaginai intervenir dans la clause where

    autres idéee ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Par défaut
    Bon en fait j'ai simplifier au max pour trouver ce que je voulais :

    dans la vue
    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
     
    Select 
      'ANNUEL',
      typdos,
      current_date
    from gpc_entdos
    where datdep >= to_date('01/01/' || to_char(current_date, 'YYYY'),'dd/mm/yyyy')
     
    union all
     
    SELECT
                 'PERIODE',
                 typdos,
                 datdep
    from gpc_entdos
    puis la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select periodicite,typdos,count(*)
    from stats_nombre_dossier_test
    where datdep between to_date('01/11/2007','dd/mm/yyyy') and to_date('29/11/2007','dd/mm/yyyy') or periodicite = 'ANNUEL'
    group by periodicite, typdos;
    ben voilà, je sais pas si ca reservira...

    merci Orafrance pour ton soutien

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

Discussions similaires

  1. Comment créer une vue avec des paramètres (objets) ?
    Par Ryu2000 dans le forum Eclipse Platform
    Réponses: 25
    Dernier message: 12/12/2012, 13h11
  2. Réponses: 8
    Dernier message: 10/12/2007, 16h27
  3. Redirection avec paramètres pour la vue
    Par sir_gcc dans le forum Zend Framework
    Réponses: 2
    Dernier message: 16/10/2007, 21h12
  4. vue avec variable en paramètre
    Par yayooyayoo2005 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/02/2006, 14h25

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