票表
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也就是可用谢谢要怎么来写最好

解决方案 »

  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
    */
      

  2.   

    :)hellowork(一两清风) 來的真早,沒得答了。
      

  3.   

    這,分給的有點多,搶了hellowork的分了。