|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
Bonjour,
j'essaye depuis 1 semaine de trouver une solution, mais rien à y faire. Je veux trouver la liste de tous les rappel qui on eu leux dans les 5 jour suivant l'incident original. Je m'explique, lorsque quelqu'un appel et que le problème n'est pas résolu après le première appel (première enregistement) je dois compté combien de ce genre de problème il y a eu. Je voudrais que à chaque fois qu'on trouve un problème dans la table pouvoir regarder les 5 jours qui suivent et vérifier si il y a eu des problèmes semblable. Si non je continue au prochain jour. Si oui alors je recommence ma recherche après le dernier jour ou il y a eu un problème similar J'ai essayer une requète hierachique, mais ceci me disait qu'il y avait des référence cyclique. J'ai essayer des sous requètes, mais dans ce cas là je me retrouvais avec des doublons dans la sous requêtes et je ne pouvais pas trouver dans la requête principal, les problème qui se retrouvais aussi dans la sous requête (chose que je ne veux pas) Avec un LEFT OUTER JOIN, je pouvais faire un select distinct, mais le problème est que encore là je ne peux pas retiré de la table principal tous les résultat que l'on retrouve dans la table secondaire. Est-ce que quelque pourrais m'aider. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Expert Datawarehouses + BO (sur BDD Oracle et SQL Server) Inscription : mars 2003 Messages : 645 ![]() |
avec des exemples, une structure de table, les requêtes utilisées ça pourrait faciliter les choses
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
Ok
La table s'appel PROBLEMS Je veux resortir les champ PROBLEM_ID, REPORT_DATE Il faut que je sorte tous les problèmes qui on le même champ SYSTEM, COMPONENT, ITEM et IS_INVENTORY_ID. Il faut aussi que la REPORT_DATE soit égale ou supérieur ou problème original, mais ne dépasse par REPORT_DATE + 5 Je rattache cette table à une autre simplement pour avoir le nom de l'équipement au lieux d'un numéro, la table s'appel IS_INVENTORY, je ressort le champ ASSET_TAG et je rattache les deux table avec le champ IS_INVENTORY_ID voici un aperçu d'une des requète hierachique avec laquelle j'avais le plus d'espoire SELECT "PROBLEMS"."PROBLEM_ID", "PROBLEMS"."REPORT_DATE", "IS_INVENTORY"."ASSET_TAG", LEVEL FROM "EXAV"."PROBLEMS" "PROBLEMS" INNER JOIN "EXAV"."IS_INVENTORY" ON "PROBLEMS"."IS_INVENTORY_ID" ="IS_INVENTORY"."IS_INVENTORY_ID" WHERE "PROBLEMS"."PROBLEM_CODE" <> 'ANNULE' AND "PROBLEMS"."SYSTEM" IN ('PF MIC', 'PF FCDQ') AND "PROBLEMS"."REPORT_DATE" >= SYSDATE -5 AND "PROBLEMS"."REPORT_DATE"< SYSDATE CONNECT BY "PROBLEMS"."IS_INVENTORY_ID" = PRIOR "PROBLEMS"."IS_INVENTORY_ID" AND "PROBLEMS"."SYSTEM" = PRIOR "PROBLEMS"."SYSTEM" AND "PROBLEMS"."COMPONENT" = PRIOR "PROBLEMS"."COMPONENT" AND "PROBLEMS"."ITEM" = PRIOR "PROBLEMS"."ITEM" AND "PROBLEMS"."PROBLEM_ID" <> PRIOR "PROBLEMS"."PROBLEM_ID" AND "PROBLEMS"."REPORT_DATE" >= PRIOR "PROBLEMS"."REPORT_DATE" AND "PROBLEMS"."REPORT_DATE" < (PRIOR "PROBLEMS"."REPORT_DATE"+5) Merci pour votre aide |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Expert Datawarehouses + BO (sur BDD Oracle et SQL Server) Inscription : mars 2003 Messages : 645 ![]() |
Pas simple.
A première vue j'aurais tendance à utiliser une table Calendrier, comme cela on éviterait peut-être CONNECT BY. Je ne peux pas l'affirmer à 100% mais j'ai l'impression qu'il y a trop de choses dans le CONNECT BY et qu'il ne faudrait faire la jointure avec la table IS_INVENTORY qu'une fois que le reste est résolu, ça complique les choses pour rien cette jointure. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
Une table Calendrier??
Pour le lien a IS_INVENTORY, c'est pas nécessaire imédiatement c'est certain, mais je dois l'avoir éventuellement. |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Est ce que cette requête convient à ton besoin ?
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
No unfortunately not.
I'm looking at data from the last year 2006-03 to 2007-03. -> Basically I need all problems -- then for each problem I need to verify if within 5 days of that problem there is any number of problems with the same PROBLEM SYSTEM, ITEM as the first. -- If there is none then I continue listing the problems -> I then need to count the total number of problems (not counting the ones that fall under the "within 5 days" rule and count the number of problems that do have similar problems within 5 days. The idea behind this is to find all problems that would not be properly resolved on first call. Thanks for any help you could give me |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
A small test case would be nice.
Thanks Exemple Citation:
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
Ok here is what I would like
The level field is what I was thinking about originally for a hiearchic table Code :
|
||
|
|
00
|
|
|
#10 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
Messieurs, on est dans un forum francophone. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
Désolé, j'ai poster dans tellement de forum que des fois je me mélanger
Désolé tous le monde |
|
|
00
|
|
|
#12 | ||||||||||
|
Membre Expert
![]() Expert Datawarehouses + BO (sur BDD Oracle et SQL Server) Inscription : mars 2003 Messages : 645 ![]() |
ça donnerait quelque chose en oracle comme:
Code :
Explication (tests et explication en SQL server car je n'ai pas oracle sous la main) 1) Présentation de l'utilisation de la table calendrier avec affichage tout les 5 jours (autour du 1er janvier 2005 pour ne pas dérouler tout le calendrier): Code :
2)début de l'explication avec la table pubs.dbo.sales de sql server Code :
3)avec les éléments suivants: Code :
Code :
edit : précision : reste à rajouter quelque conditions entre p1 et p2 |
||||||||||
|
|
00
|
|
|
#13 | ||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
salut,
Si j'ai bien compris, Si on a un probleme system=1 ,Component =1 , Item =5 qui date du 2006-03-07 alors le level sera de 3 ( c'est a dire c'est la troixième recherche que tu as fait ) Code :
|
||
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
Non je n'ai pas besoin de 3ième niveau, seulement 1 et 2 ième niveau
Pour l'explication avec une table Calendrier, j'ai jamais essayer ce genre de fonction et j'ai une peux de difficulté à comprendre comment ça fonctionne. Pour votre information, je n'ai pas de droit d'écriture dans sur le serveur. Merci encore pour tous votre aide |
|
|
00
|
|
|
#15 | ||
![]() Inscription : septembre 2004 Messages : 626 ![]() |
Bonjour,
Et avec un lead ? : Code :
__________________
In the heart of the truly greats, perfection is never achieved but endlessly pursued. Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...) |
||
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 8 ![]() |
Le lead ne donnera t'il pas seulement 1 des 2 niveau que je requiert?
|
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Expert Datawarehouses + BO (sur BDD Oracle et SQL Server) Inscription : mars 2003 Messages : 645 ![]() |
ça s'est résolu comment ?
C'était intéressant comme problématique. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com