J'ai un tableau de patients qui a les colonnes suivantes: patient_id, obs_id, obs_date. Obs_id est l'ID d'une observation clinique (telle que la lecture du poids, la lecture de la pression artérielle ... etc), et obs_date est quand cette observation a été prise. Chaque patient peut avoir plusieurs lectures à différentes dates ... etc. Actuellement, j'ai une requête pour obtenir tous les patients qui avaient obs_id = 1 et les insérer dans une table temporaire (a deux colonnes, patient_id et drapeau que je mets à 0 ici):SQL à interroger par dépendances de date
insert into temp_table (select patient_id, 0 from patients_table
where obs_id = 1 group by patient_id having count(*) >= 1)
J'Executer une mise à jour instruction pour définir le drapeau à 1 pour tous les patients qui ont aussi eu obs_id = 5:
UPDATE temp_table SET flag = 1 WHERE EXISTS (
SELECT patient_id FROM patients_table WHERE obs_id = 5 group by patient_id having count(*) >=1
) v WHERE temp_table.patient_id = v.patient_id
Voici ma question: Comment puis-je modifier les requêtes (sans les combiner ou le retrait du groupe par déclaration) de telle sorte que je peux répondre la question suivante: "obtenir tous les patients qui avaient obs_id = 5 après obs_id = 1". Si j'ajoute min (obs_date) ou max (obs_date) à la sélection de chaque requête, puis ajoute "AND v.obs_date> temp_table.obs_date" à la seconde, est-ce correct ??
La raison pour laquelle je ne dois pas supprimer le groupe par une instruction ou une combinaison est que ces requêtes sont générées par un générateur de code (à partir d'une application web) et que je voudrais faire cette modification sans gâcher le générateur de code. réécrire.
Un grand merci à l'avance,
merci, je comprends parfaitement. Cependant, je n'ai pas implémenté ce générateur de code, je modifie juste le code de quelqu'un d'autre. Changer la stratégie globale de génération de code n'est pas une option pour moi, c'est pourquoi je suis aux prises avec cela. – wsb3383