begin process at 2008 08 28 18:35:53
1 233 316 membres
412 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Calcul de la différence de temps entre deux tuples [ Access / Requêtes ] (lofo18)

Calcul de la différence de temps entre deux tuples le 08/06/2007 11:36:16

lofo18
Bonjour tout le monde!

Dans le cadre d'un projet pour le domaine médical,
Je dois calculer le temps moyen entre deux interventions,
mais je bloque complétement, je n'arrive pas à faire la différence seulement entre deux tuples qui ce suivent
sans la faire sur tous les autres...

voici un exemple d'une table dans laquelle je doit effectuer ce calcul:

HEURE_DEBUT          HEURE_FIN   

22/01/1997 10:51:24    22/01/1997 11:35:46
28/06/2000 10:02:23    28/06/2000 10:45:18
24/04/2007 13:31:07    24/04/2007 13:33:26
25/04/2007 11:53:25    25/04/2007 11:55:58
25/04/2007 13:01:32    25/04/2007 13:03:20
26/04/2007 09:45:26    26/04/2007 09:54:45
26/04/2007 10:28:11    26/04/2007 10:32:58
02/05/2007 11:18:43    02/05/2007 11:18:54
02/05/2007 13:09:34    02/05/2007 13:09:50
02/05/2007 13:10:24    02/05/2007 13:10:55
02/05/2007 13:14:41    02/05/2007 13:15:06
14/05/2007 15:51:28    14/05/2007 16:00:10


j'ai beaucoup cherché sur internet, mais je n'ai trouvé personne confronté au meme
probleme que moi.

si quelqu'un à une idée pour m'aiguiller je lui en serai infiniment reconnaissant

Par avance, merci.

Re : Calcul de la différence de temps entre deux tuples le 10/06/2007 22:42:41

nhervagault
Salut Je ne comprends pas la phrase différence seulement entre deux tuples qui ce suivent Regardes la focntion datediff pour résoudre ton probleme de difference

Re : Calcul de la différence de temps entre deux tuples le 11/06/2007 16:50:50

lofo18
Salut nhervagault
merci d'avoir pris un peu de temp pour mon problème. et merci pour la fonction datediff que je ne connaissait pas, mais ça ne regle pas complétement mon problème. C'est vrai que je n'ai pas été très clair dans mon explication, je vais essayé d'étre plus précis
 ID INTERV      HEURE_DEBUT(HD)          HEURE_FIN  (HF)
          1               22/01/1997 10:51:24                22/01/1997 11:35:46
          2               28/06/2000 10:02:23                28/06/2000 10:45:18
          3               24/04/2007 13:31:07                24/04/2007 13:33:26
          4               25/04/2007 11:53:25                25/04/2007 11:55:58
          5               25/04/2007 13:01:32                25/04/2007 13:03:20
(c'est le meme exemple que décrit plus haut, mais avec un identifiant, ce sera plus facile)
Ce que je voudrai réaliser c'est une moyenne du temps qui sépare deux interventions soit:
    HeureDebut de l'interv 2   moins  HeureFin  de l'interv 1  
    HeureDebut de l'interv 3   moins  HeureFin  de l'interv 2
    HeureDebut de l'interv 4   moins  HeureFin  de l'interv 3
    etc....
pour réaliser la moyenne de ce calcul.
Avec cette requete:
    select  DISTINCT (H1.HEURE_DEBUT) , H1.HEURE_FIN ,H2.HEURE_DEBUT, H2.HEURE_FIN,            
    cdate(H2.HEURE_DEBUT - H1.HEURE_FIN) as "Temp" 
    From  INTERVENTION as H1 INNER JOIN INTERVENTION as H2 on (H1.HEURE_DEBUT <> H2.HEURE_DEBUT)

j'ai obtenu la différence entres tous les tuples:
    HD interv2 - HF interv1
    HD interv2 - HF interv3
    HD interv2 - HF interv4
etc....
alors que je voudrai juste faire la difference entre le tuple (2 et 1), (3 et 2) etc...
(d'où ma phrase "je n'arrive pas à faire la différence seulement entre deux tuples qui ce suivent sans la faire sur tous les autres...")
j'espère avoir été un peu plus clair.
encor merci à ceux qui consacreront un peu de temps à ce problème.

Re : Calcul de la différence de temps entre deux tuples le 11/06/2007 19:44:23

nhervagault
Réponse acceptée !
Si tu joue avec ta clé primaire ca doit le faire? WHERE H1.IDINTERV = H2.IDINTERV +1 En esperant qu'il se suive?

Re : Calcul de la différence de temps entre deux tuples le 11/06/2007 20:41:42

lofo18

En théorie la solution que tu ma donné marche très bien, et je n'avai  pas dutout pensé à ce genre de solution
malheureusement, je me suis aperçu que certaine intervention peuvent être effacée, et de ce fait, leur clé primaire aussi...
donc impossible de savoir si H1.IDINTERV = H2.IDINTERV +1
mais merci quand meme, ça fait deux chose que tu m'apprend ^^
(je début un peu en sql comme tu as du le remarquer)
je vais continuer à chercher, et si je trouve une solution, je la posterai ici. ça pourra peut etre aider quelqu'un (si je trouve....)


Re : Calcul de la différence de temps entre deux tuples le 11/06/2007 22:13:14

nhervagault
Réponse acceptée !
Salut Tu peux rajouter le numero de ligne a des deux tables. Attention c'est vraiement de la bidouille et ca doit bouffé en performance de manière importante. a moins de creer une colonne. Qui te numerote les lignes avant la requete, while pas fin des enregsitrement macolonnerownumber = i + 1 Pour la table et la tu n'as plus de trou car elles sera mis en permanence en route avant ton calcul. NB si nbenregistrement = max(macolonnerownumber) [- 1] dependant si tu es base en base 0 ou 1 pour ton indexage de ta colonne de numero de ligne. pas la peine de refaire l'update. Bon courage. Extrait d'un post google group Si tu as une cle primaire SELECT (SELECT Count(theField) + 1 FROM tblSource AS A WHERE A.TableID < B.TableID) As RowNumber, TableID, theField FROM tblSource AS B; Sinon Public Function LineNum(lngFldVal As Long, strSource As String, strKey As String) As Long Dim strCrit As String strCrit = "[" & strKey & "] < " & CStr(lngFldVal) LineNum = Nz(DCount(strKey, strSource, strCrit)) + 1 End Function Then it can be called like: SELECT LineNum([TableID],"tblSource","TableID") AS RowNumber, TableID, theField FROM tblSource; SELECT LineNum([QID], "qryNew", "QID") As RowNumber, * FROM qryNew; Note: One way to get a unique QID is to use the key from a source table (qryNew: SELECT tblSource.TableID AS QID...). I also tried an old query I had lying around as qryNew :-): qryNew: SELECT qryOrdinalIPs.IP AS IP1, qryOrdinalIPs.ID FROM tblIPs INNER JOIN qryOrdinalIPs ON tblIPs.ID = qryOrdinalIPs.ID WHERE (((qryOrdinalIPs.theOrdinal)=1)) GROUP BY qryOrdinalIPs.IP, qryOrdinalIPs.ID; SELECT LineNum([ID], "qryNew", "ID") As RowNumber, * FROM qryNew;

Re : Calcul de la différence de temps entre deux tuples le 18/06/2007 12:17:06

lofo18
Salut et désolé d'avoir mis autant de temps pour répondre.
Mais un GRAND merci à toi, pour le temps que tu as consacré à mon probleme, et surtout à la solution que tu m'as donnée.

avec

SELECT (SELECT Count(theField) + 1 FROM tblSource AS A
WHERE A.TableID< B.TableID) As RowNumber, TableID, theField
FROM tblSource AS B;


j'ai pu numéroter tous mes tuples avec des numéros qui se suivent , et avec

WHERE H1.IDINTERV = H2.IDINTERV +1

j'ai pu réaliser la différence de temps entre deux patients.

encor merci!!!!

Re : Calcul de la différence de temps entre deux tuples le 19/06/2007 10:07:16

lofo18
Si ça interesse quelqu'un, voila la requête que j'ai obtenu,
j'espere que ça pourra être utils pour quelqu'un bien que ce soit assé spécifique.

Select cdate(R2.HEURE_DEBUT - R1.HEURE_FIN) as 'Temp Entre deux Intervention'
from (
    Select (
        SELECT Count (HEURE_DEBUT)+  1
        FROM (
                SELECT distinct(HEURE_DEBUT), HEURE_FIN
                FROM INTERVENTION
                WHERE HEURE_DEBUT IS NOT NULL
                AND HEURE_FIN IS NOT NULL) AS H1
       WHERE H1.HEURE_DEBUT < H2.HEURE_DEBUT
    ) As IDTMP,H2.HEURE_DEBUT, H2.HEURE_FIN
    FROM(
        SELECT distinct(HEURE_DEBUT), HEURE_FIN
        FROM
        INTERVENTION
        WHERE HEURE_DEBUT IS NOT NULL
        AND HEURE_FIN IS NOT NULL) AS H2
    WHERE H2.HEURE_DEBUT IS NOT NULL
    AND H2.HEURE_FIN IS NOT NULL) as R1,
    (
    Select (
        SELECT Count (HEURE_DEBUT)+  1
        FROM (
                SELECT distinct(HEURE_DEBUT), HEURE_FIN
                FROM INTERVENTION
                WHERE HEURE_DEBUT IS NOT NULL
                AND HEURE_FIN IS NOT NULL) AS H1
        WHERE H1.HEURE_DEBUT < H2.HEURE_DEBUT
    ) As IDTMP,H2.HEURE_DEBUT, H2.HEURE_FIN
    FROM(
        SELECT distinct(HEURE_DEBUT), HEURE_FIN
        FROM
        INTERVENTION
        WHERE HEURE_DEBUT IS NOT NULL
        AND HEURE_FIN IS NOT NULL) AS H2
    WHERE H2.HEURE_DEBUT IS NOT NULL
    AND H2.HEURE_FIN IS NOT NULL) AS R2

WHERE R1.IDTMP+1 = R2.IDTMP


Bon Courage à tous!!


Classé sous : temps, différence, heure, calcul, tuples

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS