Bonjour,
J'ai un soucis dans la formulation d'une requete et j'esperais demander un peu d'aide
J'ai simplifié le problème comme suit:
J'ai une table Acte pour une base de donnée médicale :
Je veux calculer la colonne IDActeParPatient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 IDActe Historique IDPatient 1 01-01-2001 1 1 02-01-2001 1 2 01-01-2001 2 3 03-01-2001 1
Brievement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 IDActe Historique IDPatient IDActeParPatient 1 02-01-2001 1 1 2 01-01-2001 2 1 3 03-01-2001 1 2
La table Acte contient des Actes ainsi qu'un historique des modifications pour chaque Acte (l'index est la pair (IDActe,Historique)).
Ainsi ceux qui nous interessent sont les derniers modifiés:
Jusque là pas de problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT A.IDActe, MAX(Historique) AS Historique FROM Acte A GROUP BY IDActe
Maintenant, j'ai besoin de numéroter dynamiquement les Actes par patient. On ignore donc les différentes versions d'un Acte (on prend la derniere) et on compte combien il y a d'actes ayant un IDActe inférieur ou égal pour un même patient.
J'ai crée une vue DernActe avec la requete précédente et j'essaye la requete suivante :
Cependant ça ne fonctionne pas, j'obtiens de grands nombres dans IDActeParPatient lorsqu'un acte a plusieurs version en historique (pour un patient ayant 1 acte mais 3 versions de l'acte, j'ai 81).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT DA1.*, COUNT(*) AS IDActeParPatient FROM DernActe DA1 INNER JOIN DernActe DA2 ON DA1.IDPatient = DA2.IDPatient AND DA2.IDActe >= DA1.IDActe GROUP BY DA1.IDActe
Avez-vous une idée d'où peut venir mon problème ?
Merci
Partager