我在SQL中有两个表,它们具有以下结构:
1)医生表
DoctorId PendingCases OngoingCases CompletedCases
2)案例表
CaseId DoctorId CaseStatus
在Cases Table中,如果CaseStatus设置为0,那么它是一个待处理的情况,如果它被设置为1,那么它是一个正在进行的情况,如果它被设置为2,那么它就是一个完整的情况。
因此,给予医生的医生待决案件数量为:
select count(*) as 'Pending Cases'
from Cases
Where doctorid = '993883'
and casestatus = 0;
但是我需要这些信息来自动更新医生表中的三列。我知道我必须使用触发器,如果你能证明这一点会很好。
答案 0 :(得分:1)
不要更新表格,只需使用视图
SELECT * FROM doctors WHERE doctorId = 993883;
然后您可以查询视图
let unpairwise (s: seq<'a * 'a>) : seq<'a> = seq {
yield (fst (Seq.head s))
yield! (s |> Seq.map snd)
}
答案 1 :(得分:0)
我想出了如何使用触发器来更新列:
create trigger updatedoctorscases
on cases
for insert, update, delete
as begin
update doctors
set pendingcases = (select count(*) from cases
where casestatus = 0
and doctors.doctorid = cases.doctorid);
update doctors
set ongoingcases = (select count(*) from cases
where casestatus = 1
and doctors.doctorid = cases.doctorid);
update doctors
set completedcases = (select count(*) from cases
where casestatus = 2
and doctors.doctorid = cases.doctorid);
end