Bonsoir,
Je suis en train de m'arracher les cheveux sur une requête que je n'arrive pas à écrire... Probablement une histoire de requête imbriquée, mais je ne trouve pas.
Il s'agit d'un suivi de conseils de prise en charge (domaine médical), dans lequel je note les avis formulés. Avis une première fois, suite d'avis, puis 3e question toujours pour la même histoire, etc. En sachant que les coups de fils s'enchainent, passent d'un nouveau patient à une ancienne histoire, puis re-le nouveau patient, puis encore un nouveau, puis retour sur un ancien, etc...
Ma table cmi_cmi est construite ainsi :
- numcmi : identifiant unique de chaque avis
- numcmiref : avis initial auquel se rapporte l'avis numcmi (pour un premier avis sur un problème, numcmiref = numcmi. Pour les avis suivants, numcmiref renvoie au premier avis formulé pour le patient en question)
- datecmi
- contenu, etc.
Dans la page de consultation des avis formulés, je voudrais afficher entre une date A et une date B tous les avis formulés, mais aussi tout leur historique (= pour chaque avis formulé entre A et B, afficher aussi les avis antérieurs à la date A concernant le même patient = ayant le même numcmiref)
Pour plus de lisibilité, je "packe" les avis liés à un même patient.
Jusque là, j'y arrive.
Mais ce que je n'arrive pas à faire, c'est à ordonner les "packs" par ordre croissant de date d'avis le plus récent (par MAX(datecmi) de chaque numcmiref, quoi)
J'ai essayé des trucs du genre
puis une boucle sur les différents numcmiref pour récupérer pour chacun tous les avis (numcmi) dans l'ordre chronologie et les afficher en pack
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $q1="SELECT DISTINCT numcmiref FROM cmi_cmi INNER JOIN ( SELECT numcmiref, MAX(datecmi) AS datecmi FROM cmi_cmi WHERE datecmi BETWEEN '".$dateA."' AND '".$dateB."' GROUP BY numcmiref ) AS sousrequete USING(numcmiref, datecmi)";
Mais l'ordre chronologique entre les packs n'est pas strictement respecté : c'est plutôt pas mal, mais certains avis ne sont pas à leur place (sans que j'arrive à définir de règle)
J'ai essayé aussi divers ORDER BY, sans succès
Je ne sais pas si mon problème est bien clair...
Merci déjà à ceux qui ont eu la patience de me lire jusque là !
BM
Partager