我有一个数据库表,其中包含每个患者的一个或多个条目。这些包含有关测试请求的自由文本和其他信息。例如,询问患者将返回: -
TestID PatientID RequestMade FreeText
1 23 13/12/2015 11:00:00 Feeling breathless
1125 23 07/04/2016 09:31:15 Unexplained fractures
2556 23 04/12/2016 16:20:21 Check liver function – on statins
在查看测试结果时,我必须提取与测试相关的请求信息,该信息将是测试之前的最后一个。结果有一个TestDate,所以测试日期为2016年4月13日14:21:30'应显示< 07/04/2016 09:31:15'的要求。我不确定如何有效地编码,因为返回患者的每个条目并对每个条目进行日期比较似乎不是解决它的最佳方法。
答案 0 :(得分:0)
如果您希望在单个患者和的另一个测试之前进行一个测试,那么您所寻找的测试只出现一次,那么您可以通过一个查询执行此操作为:
select t.*
from tests t
where t.patientid = 23 and
t.requestmade < (select t2.requestmade
from tests t2
where t2.patientid = t.patientid and
t2.testid = ?
)
order by t.requestmade desc
limit 1;