|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 3 ![]() |
Bonjour a tous,
Je suis actuellement sur un projet BI, et je bloque sur un problème qui parait simple mais vraiment la je n'y arrive pas... Je vais essayer de faire simple: J'ai une table RESERVATION dans laquelle j'ai un identifiant TRANS_ID, un RES_ID, une DATE_OUVERTURE et un STATUT de réservation. Le TRANS_ID correspond à ma clé primaire il permet de différencier une réservation à 2 instants différents, la date d'ouverture est la date de la version de la reservation. Exemple : TRANS_ID | RES_ID | DATE_OUVERTURE | STATUT 1 | 1 | 01/01/2011 | BK 2 | 1 | 02/01/2011 | CL 3 | 1 | 03/01/2011 | CT 4 | 2 | 02/01/2011 | BK 5 | 2 | 04/01/2011 | CL Mon problème est le suivant, je voudrai que quand des utilisateurs font une requete sous Webi en prenant une plage de date ex : entre 15/12/2010 et 02/01/2011 les réservations résultantes soit automatiquement et seulement : 2 | 1 | 02/01/2011 | CL 4 | 2 | 02/01/2011 | BK soit la version la plus récente d'une réservation sur la plage de temps donnée. J'ai tenté de passer par une table dérivé avec la requête : Code :
Mais lorsque la plage de temps ne comprend pas la DATE_OUVERTURE maximum, je n'obtiens aucun résultat. J'ai aussi tenté un @Prompt ou un @Variable mais rien de satisfaisant (peut-être que je m'y suis mal pris) J'avoue être à court d'idée, c'est pourquoi je demande un peu de votre aide. Merci d'avance pour ceux qui essaieront. Je sais que je n'ai pas été actif depuis mon inscription mais je compte corriger ca, désolé... |
||
|
|
00
|
|
|
#2 |
![]() ![]() Julien LizzulInscription : mars 2008 Messages : 1 103 ![]() |
Bonjour,
Pour t'aider, je vais avoir besoin de ton SGBD. En espérant que tu ne sois pas sous Access
__________________
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 3 ![]() |
Oracle 10g
J'aurai du le préciser avant en effet. Merci de t'interesser à mon problème. |
|
|
00
|
|
|
#4 | ||||||
![]() ![]() Julien LizzulInscription : mars 2008 Messages : 1 103 ![]() |
Je vais pouvoir t'aider alors
![]() Tu vas pouvoir t'en sortir en utilisant la fonction Rank(). Ton idée était la bonne, mais je pense que tu n'arrivais tout simplement pas à la mettre en place. Pour résoudre le problème : Tu crées une table dérivée qui te ramène les lignes filtrées avec la fourchette de date souhaitée par l'utilisateur (@prompt()). Ensuite, on va faire un classement par id de réservation en fonction de la date. Ce qui donne la table dérivée suivante (je l'appelle TD_RESA) : Code :
Code :
![]() Petite remarque : Si tu as 2 réservations sur la même date : Code :
__________________
|
||||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 3 ![]() |
Normalement ce cas (2 dates identiques) est impossible mais bon...
Vraiment merci pour ton aide, je testerai ta solution Lundi quand je retourne sur ce projet. Si tu as besoin de quoi que ce soit n'hésite pas |
|
|
00
|
|
|
#6 |
![]() ![]() Julien LizzulInscription : mars 2008 Messages : 1 103 ![]() |
Si c'est impossible, alors pas de problème, ca fonctionnera.
Par contre, si c'est possible, demande ce qu'il faut retourner, et même si c'est impossible, demande "Et si qqun fait une erreur de saisie ?". Combien de fois m'a t-on dit : ce cas est impossible, et je me retrouve avec sur les bras. En gros, si on prend les 2, alors le rank() est ok, si tu dois n'en prendre qu'un, il faudra utiliser dense rank() Bon courage
__________________
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com