问题描述
关键是要更新MHS的John doe的电话簿表(从0更改为1)**(从第1周,第2周,第16周)。该应用程序会在创建日期列中捕获签入日期,该日期应等于星期日期表中第1周的日期。
如果John doe应尝试从JHS检入,则名册表不应更新。 参见图片以获得清晰度和细节 当前状态:enter image description here 预期结果:enter image description here
名单表(当前状态)
UID Name School Participant1phone Participant2phone Week1 Week2
1 John Doe MHS 8324444444 8325555555 0 0
2 Nia Long JHS 6785555555 6784444444 0 0
工作日表:
SchoolUID School Week1 Week2
1 MHS 9/7/2020 9/14/2020
2 JHS 9/8/2020 9/15/2020
名册表(签到后预期结果)
UID Name School Participant1phone Participant2phone Week1 Week2
1 John Doe MHS 8324444444 8325555555 1 1
2 Nia Long JHS 6785555555 6784444444 1 1
应用表
ID Userphonenumber Created on
1 8324444444 9/7/2020
2 6785555555 9/15/2020
这是到目前为止的SQL查询:
create procedure updtroster
AS
begin
update roster
set roster.week = 1
from apptable a
left join roster on a.UserPhoneNumber = roster.Participant1phone
end;
解决方法
也许我错了,但是我已经假设您正在使用SQLServer ...
当您要基于另一个表中的数据来更新一个表时,可以使用以下方法执行更新语句:
update roster
set roster.week = 1
from apptable a
left join roster on a.UserPhoneNumber = roster.Participant1phone;
有了它,那么很容易将其放在过程中:
create procedure updtroster
AS
begin
update roster
set roster.week = 1
from apptable a
left join roster on a.UserPhoneNumber = roster.Participant1phone;
end;
如您所见,我仅添加了我从您的问题中了解的联接条件。如果需要,您也可以添加其他条件。您可以将其放在where子句中,然后update语句将如下所示:
update roster
set roster.week = 1
from apptable a
left join roster on a.UserPhoneNumber = roster.Participant1phone
where roster.some_column = getdate();
这是演示,其中我创建了两个表以供测试。然后,我测试了更新语句,然后测试了过程。