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 :

Problème de requête


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut Problème de requête

    Voilà j'ai un petit souci sur une requete.

    Pour expliquer la situation cela concerne une gestion d'articles. A savoir qu'un article en panne passe en "Intervention" pour être réparé et ce qu'on m'a demandé c'est que l'on affiche la moyenne des délais entre chaque intervention sur un article (entre la fin de l'une et le début de la suivante) sur les 3 derniers mois.
    Et pour les articles n'ayant qu'une seule intervention on lui attribue le délai suivant : Date du début de traitement - la date d'il y a 3 mois.
    Et pour les articles n'ayant eu aucune intervention on leur met 3 mois de delai (soit 90 jours).

    donc je leur ai sorti le code suivant qui marche très bien


    Tables et champs : WS=> Table "Intervention"
    --> DT_WS_BEGIN = Date de début d'intervention
    --> DT_WS_END = Date de fin d'intervention
    --> CD_WO = N° intervention
    --> CD_BOX = N° Article

    BOX=> Table "Article"
    --> CD_BOX = N° article

    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
     
    select round(avg(T1.delai))DELAI,'ARTICLE'TYPE
    from(
        select  L2.BOX BOX,L1.cd_wo, decode(L1.delai,'',90,L1.delai)DELAI
        from(
           select B.CD_BOX BOX, CD_WO, WS.DT_WS_BEGIN D, WS.DT_WS_END F, 
             case
               when to_date( WS.DT_WS_BEGIN) - to_date((lag(WS.DT_WS_END, 1) over(partition by B.CD_BOX order by WS.DT_WS_BEGIN))) is null
               then round(WS.DT_WS_BEGIN-(sysdate-90))
               else to_date( WS.DT_WS_BEGIN) - to_date((lag(WS.DT_WS_END, 1) over(partition by B.CD_BOX order by WS.DT_WS_BEGIN)))
             end delai
           from WS, BOX B
           where  B.CD_BOX=WS.CD_BOX
              and DT_WS_BEGIN between (sysdate-90) and sysdate
               /*###*/ --expliqué plus bas
           group by B.CD_BOX, CD_WO, WS.DT_WS_BEGIN, WS.DT_WS_END
           order by B.CD_BOX, CD_WO, WS.DT_WS_BEGIN
            )L1,
            (
              select CD_BOX BOX
              from BOX
            )L2
        where L1.BOX(+)=L2.BOX
         and decode(L1.delai,'',90,L1.delai) >= 1
      )T1
    Le problème est qu'aujourd'hui on me demande de changer ça en faisant la même chose mais pas par rapport à la date du jour mais par rapport à une date entrée par l'utilisateur.

    Je précise que ma requete est intégrée dans une appli qui affiche que le résultat et où j'ai possibilité d'ajouter une zone de saisie qui remplacera les /*###*/ par un "and champs(que j'aurais administré) = saisie de l'utilisateur"


    Donc pour résumer le problème je dois remplacer mon sysdate par une entrée manuelle.
    Pas évident à expliquer mais bon j'espère avoir été le plus clair possible

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Pas évident! Sys_Context ça te va ou pas ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    euh non je pense pas. Je connaissais pas cette fonction mais après avoir chercher je ne pense pas qu'elle puisse m'aider

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    Je suppose que tu es dans une procédure PL/SQL.
    Si c'est le cas, la date utilisateur doit être passée en paramètre en entrée de ta procédure stockée, et tu substitue ensuite ce paramètre à sysdate directement dans la requête.

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par oOBaalberithOo Voir le message
    euh non je pense pas. Je connaissais pas cette fonction mais après avoir chercher je ne pense pas qu'elle puisse m'aider
    Pour quoi ? Il suffit de remplacer sysdate par Sys_Context('mon_context','ma_date') dans ta requête et de prendre soin de mettre ta valeur dans le contexte avant d'exécuter la requête.
    Si non tu peux construire ton select dynamiquement, peut être.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Merci les gars pour vos réponse ! dsl de répondre que maintenant mais après vos réponse j'ai quitté le boulot et en revenant il m'ont changé l'objectif de ma requete au taf et du coup plus besoin, et comme un couillon ayant autre chose en tête j'ai oublié de vous remercier, mieux vaut tard que jamais on va dire ^^ ceci dit j'aurais appris ce qu'est la fonction sys_context, merci mnitu

    en tout cas merci les gars

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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