【发布时间】:2014-09-19 23:04:46
【问题描述】:
我有以下表格
AdmittedPatients(pid, workerid, admitted, discharged)
Patients(pid, firstname, lastname, admitted, discharged)
DiagnosticHistory(diagnosisID, workerid, pid, timeofdiagnosis)
Diagnosis(diagnosisID, description)
这是一个 SQL Fiddle:http://sqlfiddle.com/#!15/e7403
注意事项:
- AdmittedPatients 是医院所有患者入院/出院的历史记录。
- Patients 包含在医院有记录的所有患者。患者还列出了目前住在医院的人(即出院为 NULL)。
- DiagnosticHistory 包含所做的所有诊断。
- 诊断包含所做诊断的描述
这是我的任务:列出在上次出院日期后 30 天内入院的患者。为每位患者列出他们的患者识别号、姓名、诊断和入院医生。
这就是我到目前为止所做的:
select pid, firstname, lastname, admittedpatients.workerid, patients.admitted, admittedpatients.discharged
from patients
join admittedpatients using (pid)
group by pid, firstname, lastname, patients.admitted, admittedpatients.workerid, admittedpatients.discharged
having patients.admitted <= admittedpatients.discharged;
当它应该是 0、1、2 和 4 时,它会从 0、1 和 4 返回 pid。
【问题讨论】:
-
既然入院日期在病历上,我们能做的就是看看最近的入院时间就够了吗?
-
它为我返回的数据不是你已经编辑了最后一行。
-
@xQbert - 是的。我应该提到这是我编写的第一个数据库。显然,设计并不优雅。
-
@Scott - 再次编辑。
-
@piofusco 只是一个警告。每当您遇到数据库的结构问题时,请认真考虑一下。如果现在不能扩展,任何使用这种结构的开发都必须改变。这可能会导致以后的大量返工。获得正确的设计和可扩展性非常重要,否则您将不得不继续返工疏远开发人员和客户。
标签: sql postgresql