Date interval debut - fin - SQL/NoSQL - Programmation
Marsh Posté le 22-05-2007 à 15:55:40
Pas de solution miracle. Celle que tu as mis en place et qui ressemble à une usine à gaz me semble la plus simple...
=> Jointure de la table sur elle-même avec "t1.date deb < select min(2.datdeb) where t2.datedeb > t1.datdeb"
Marsh Posté le 22-05-2007 à 16:34:48
Sans vouloir faire le gars trop chiant mais je dois me planter quelque part, est il possible d'avoir la requete en "entier" ?
J'ai essayer en reprenant ton bout de requete mais ya un truc qui "coince"...
Marsh Posté le 22-05-2007 à 16:52:37
Pourquoi tu te contente pas de mettre la date de debut/fin quand il est "ouvert", avec ca tu peux déduire facilement quand il est "fermé".
Marsh Posté le 22-05-2007 à 17:58:06
je te poste un truc ce soir, là gigot d'agneau
Marsh Posté le 22-05-2007 à 19:19:39
Après réflexion rapide, je crois que j'ai trouvé bien plus simple que ce que j'ai dit. A vérifier :
Requête 1 :
Code :
|
En fait, à première vue, cette requête toute bête devrait marcher
Marsh Posté le 22-05-2007 à 22:20:47
sachant que si tu es sur un sgbd un peu correct tu dois avoir des fonctions analytiques qui te permettent de faire ca sans trop te casser le derriere, genre en oracle, je bosse quasi exclusivement la dessus donc je ne connais pas les autres, mais ca m'etonnerait que mssql n'ait pas un truc du genre.
Code :
|
en gros tu definis une clause de fenetrage, ce qui correspond a toutes tes lignes ayant le meme iulit, il va trier ses fenetres suivant ton critere, et aller rechercher le suivant. Une fois qu'on a gouté a ca difficile de s'en passer
marrant je bosse aussi dans un hosto, tu dois sortir des stats sur des unités de soin?
Marsh Posté le 23-05-2007 à 08:21:33
bonjour à tous, je m'en vais tester vos solutions, je vous tiens au courant.
Ps:casimir, oui c'est pour les unité de soins mais aussi pour tous les autres service de l'hôpital (finance,drh,etc...)
PS: Lephasme, c'est parce que il n'y a pas que les etats ouvert et fermé.
Marsh Posté le 23-05-2007 à 10:16:32
ça y est, merci bien.
solution retenu : MagicBuzz, simple et efficace.
Casimimir, je ne connaissais pas les fonctions analytiques et il est vrai que ça m'a l'air très efficace, malheuresement elle ne fonctionne pas dans mon cas. Je ne sais pas pourquoi, peut être en rapport avec mon lien odbc sur ma base db2, mais en tous cas la solution de magicbuzz fonctionne bien donc pas la peine de chercher plus loin...
++
Marsh Posté le 23-05-2007 à 11:24:48
En fait, c'est le gars assi à côté de toi si ça se trouve
Marsh Posté le 22-05-2007 à 15:50:00
bonjour,
Mon probleme est très simple et en même temp assez compliqué pour rester dans un temp correct de traitement.
J'ai une table d'ouverture/fermeture de lit dans un hopital :
IULIT --- DATE -- MOTIF
1 --- 12/05/07 -- ouvert
1 --- 17/05/07 -- ferme
1 --- 22/05/07 -- ouvert
J'aimerais passé cette table sous la forme
IULIT ---date debut --- date fin --- motif
1 --- 12/05/07 --- 17/05/07 --- ouvert
1 --- 17/05/07 --- 22/05/07 --- ferme
1 --- 12/05/07 --- 31/12/99 ou vide --- ouvert
j'ai essayé avec mes propres connaissance en SQL mais cela donne une usine à gaz
Quelqu'un peux t'il m'aider ?
Merci d'avance.