|M| 求两表根据时间更新数据 SQL语句 谢谢
票表
ID 有效时间 票座位 状态
1 1 1排2号 0
2 3 3排1号 0
3 4 5排4号 0
订单表
订单号 票座位ID 下订时间 是否付款 是否有效
1 1 2007-07-09 23:11:00 0 1
2 2 2007-07-09 08:12:00 1 1
3 3 2007-07-10 09:17:00 0 1
----------------------------------------------
要求是:
判断订单表中未付款的下订时间+上票表的有效时间 < 当前时间的时候
将这条订单是否有效改为0 也就是无效 再将票表中的状态改为1也就是可用
谢谢要怎么来写最好
------解决方案------------------------创建测试数据
declare @ticket table(ID int,有效时间 int,票座位 varchar(10),状态 bit)
insert @ticket
select 1, 1, '1排2号 ', 0 union all
select 2, 3, '3排1号 ', 0 union all
select 3, 4, '5排4号 ', 0
declare @booking table(订单号 int,票座位ID int,下订时间 datetime,是否付款 bit,是否有效 bit)
insert @booking
select 1,1, '2007-07-09 23:11:00 ', 0, 1 union all
select 2,2, '2007-07-09 08:12:00 ', 1, 1 union all
select 3,3, '2007-07-10 09:17:00 ', 0, 1
----先更新票位表
update a set 状态 = 1
from @ticket as a
inner join @booking as b on a.ID = b.票座位ID
where b.是否付款 = 0 and dateadd(day,a.有效时间,b.下订时间) < getdate()
----再更新订票表
update b set 是否有效 = 0
from @booking as b
inner join @ticket as a on b.票座位ID = a.ID
where b.是否付款 = 0 and dateadd(day,a.有效时间,b.下订时间) < getdate()
----查看
select * from @ticket
select * from @booking
/*结果
--票位表结果
ID 有效时间 票座位 状态
----------- ----------- ---------- ----
1 1 1排2号 1
2 3 3排1号 0
3 4 5排4号 0
--订票表结果
订单号 票座位ID 下订时间 是否付款 是否有效
----------- ----------- ---------------------------------------------
1 1 2007-07-09 23:11:00.000 0 0
2 2 2007-07-09 08:12:00.000 1 1
3 3 2007-07-10 09:17:00.000 0 1
*/
------解决方案--------------------:)
hellowork(一两清风) 來的真早,沒得答了。
------解决方案--------------------笔记本无线上网?
------解决方案--------------------