医生书写的病历存在表Hospital中,主要字段有:UHID(病历唯一标识),TYPE(病历所属科室),DONE(病历状态);病历的基本信息存在HOSPITAL_GATHERING表中,主要字段有:ID(病历唯一标识),入院日期,住院号(病人唯一标识),所属科室;病人入院登记表Patient,主要字段有:住院号(病人唯一标识),入院日期,出院日期,病人状态(入院、入科、出科、结算、出院)。病人办理入院登记后就开始接受治疗,医生要为病人书写住院病历。
1.请写出语句计算出每个科室书写病历的数量:
select type as 科室, count(type) as 数量 from hospital group by type order by type;
2. 请写出语句计算出每个科室医生未书写病历的数量。
3.当病人出院后我们需要修改其病历状态,将其值改为1,请给出语句:
Update HOSPITAL set DONE = ‘1’ where UHID in(select ID from HOSPITAL_GATHERING where 住院号 in (select 住院号 from Patient where病人状态 = 出院))
麻烦大家给看看写的对吗,然后是第2个我写不出来,也请大家给之招。谢谢。

解决方案 »

  1.   

    看你的描述,HOSPITAL_GATHERING.ID应该是参照Hospital.UHID建立的外键
    HOSPITAL_GATHERING.住院号 是参照Patient.住院号建立的外键
    意思就是Patient中存在住院号的而在HOSPITAL_GATHERING没有相应住院记录的就是未书写的病例.
    但是你的住院表Patient并没有说病人住在哪个科室........
    这样怎么统计每个科室的,只能统计没写病例的.
    因为我们不知道这些住院的人属于哪个科室.