如果在SQL中更新另一个表列,如何更新表列

时间:2017-05-03 06:43:22

标签: mysql sql

我在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;

但是我需要这些信息来自动更新医生表中的三列。我知道我必须使用触发器,如果​​你能证明这一点会很好。

2 个答案:

答案 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