票表
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也就是可用谢谢要怎么来写最好
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也就是可用谢谢要怎么来写最好
解决方案 »
- 初学sql 问一个简单的存储过程
- HELP ! 在存储过程里面无法使用变量来执行drop database 语句
- 小题
- 这个问题怎么解决?各位高手进来看看,在线等,我都弄2天了,邹老大也进来指导啊
- 急急急。。。请各位大侠指教------SQL Server 2008 安装程序失败
- SQL 安装过程中遇到的问题!
- 关于 columns_updated()的问题
- 在sqlserver中那里设置约束关系?
- 有问题请教,请近来帮个忙,谢谢!
- 如何用sql语言实现... ...
- 请教关于select
- SQL Server 2000中的text类型字段,在导入Access数据库时,提示“发生一般转换故障”
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
*/