从另一个 table 更新行的存储过程
Stored procedure to update row from another table
重点是更新**(从 0 变为 1)** 名册 table(第 1 周,第 2 周,....第 16 周)来自 MHS 的 John doe 检查时用他的 phone 号码。应用程序table 在创建日期列中捕获签入日期,该日期应等于周日期 table.
中的第 1 周日期
如果 John doe 尝试从 JHS 签到,名册 table 不应更新。
请参阅图片以获得清晰度和详细信息
当前状态:enter image description here
预期结果:enter image description here
花名册table(当前状态)
UID Name School Participant1phone Participant2phone Week1 Week2
1 John Doe MHS 8324444444 8325555555 0 0
2 Nia Long JHS 6785555555 6784444444 0 0
周末 table:
SchoolUID School Week1 Week2
1 MHS 9/7/2020 9/14/2020
2 JHS 9/8/2020 9/15/2020
花名册Table(签到后的预期结果)
UID Name School Participant1phone Participant2phone Week1 Week2
1 John Doe MHS 8324444444 8325555555 1 1
2 Nia Long JHS 6785555555 6784444444 1 1
应用table
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...
当你想根据另一个 table 的数据更新一个 table 时,这是你可以执行更新语句的方法 table:
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 roster
set roster.week = 1
from apptable a
left join roster on a.UserPhoneNumber = roster.Participant1phone
where roster.some_column = getdate();
这是我创建两个 table 仅用于测试目的的演示。然后我测试了更新语句,然后我测试了程序。
重点是更新**(从 0 变为 1)** 名册 table(第 1 周,第 2 周,....第 16 周)来自 MHS 的 John doe 检查时用他的 phone 号码。应用程序table 在创建日期列中捕获签入日期,该日期应等于周日期 table.
中的第 1 周日期如果 John doe 尝试从 JHS 签到,名册 table 不应更新。 请参阅图片以获得清晰度和详细信息 当前状态:enter image description here 预期结果:enter image description here
花名册table(当前状态)
UID Name School Participant1phone Participant2phone Week1 Week2
1 John Doe MHS 8324444444 8325555555 0 0
2 Nia Long JHS 6785555555 6784444444 0 0
周末 table:
SchoolUID School Week1 Week2
1 MHS 9/7/2020 9/14/2020
2 JHS 9/8/2020 9/15/2020
花名册Table(签到后的预期结果)
UID Name School Participant1phone Participant2phone Week1 Week2
1 John Doe MHS 8324444444 8325555555 1 1
2 Nia Long JHS 6785555555 6784444444 1 1
应用table
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...
当你想根据另一个 table 的数据更新一个 table 时,这是你可以执行更新语句的方法 table:
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 roster
set roster.week = 1
from apptable a
left join roster on a.UserPhoneNumber = roster.Participant1phone
where roster.some_column = getdate();
这是我创建两个 table 仅用于测试目的的演示。然后我测试了更新语句,然后我测试了程序。