数据库有三张表,如下
stk_shtUnBal(未平仓表):
字段有:shtNum(单号)、stkName(产品名称)、dtimeCreate(创建时间)、priceCreate(建仓价)、create_User_id(创建的用户ID)。stk_shtBal(平仓表):
字段有:shtNum(单号)、stkName(产品名称)、dtimeCreate(创建时间)、priceCreate(建仓价)、create_User_id(创建的用户ID)、bal_matchCreate(平仓时间)、bal_matchPrice(平仓价)、bal_WinLost(盈亏)。stk_shtCancel(取消表):
字段有:shtNum(单号)、stkName(产品名称)、dtimeCreate(创建时间)、priceCreate(建仓价)、create_User_id(创建的用户ID)、cancelTime(取消的时间)、msg(取消的原因)。用户操作:
用户下了单之后会在stk_shtUnBal(未平仓表)中产生一条记录单号为0001,
当用户平仓之后,在stk_shtUnBal表中删除0001单并把单插入到stk_shtBal;
当用户取消之后,在stk_shtUnBal表中删除0001单并把单插入到stk_shtCancel;现在的问题是:
我要根据单号查询单的信息,
返回的信息字段有:shtNum(单号)、stkName(产品名称)、dtimeCreate(创建时间)、priceCreate(建仓价)、create_User_id(创建的用户ID)、bal_matchCreate(平仓时间)、bal_matchPrice(平仓价)、bal_WinLost(盈亏)、cancelTime(取消的时间)、msg(取消的原因)、stkStauts(状态:未平仓或平仓或取消)。
即输入单号0001,要得到这张单的信息,请问各位大哥,存储过程要怎么从这3张表中返回单的信息?

解决方案 »

  1.   

    本帖最后由 libin_ftsafe 于 2009-03-19 17:53:56 编辑
      

  2.   


    create proc myproc
    @shtnum  varchar
    as
    begin
       select  a.*,b.bal_matchCreate,b.bal_matchPrice,b.bal_WinLost,c.cancelTime,c.msg, 
            ( case when b.shtNum is not null then '平倉'
                 when c.shtNum is not null  then '取消'
              else  '未平倉' end) as stkStauts
       from stk_shtUnBal a,stk_shtBal b,stk_shtCancel c
       where a.shtNum*=b.shtNum and a.shtNum*=c.shtNum
           and a.shtNum=@shtNum
    end
      

  3.   

    直接union all平仓表和取消表
      

  4.   

    直接union all平仓表和取消表
      

  5.   

    先頂鑽石級回覆,再強烈建議使用union all進行兩表關聯查詢
      

  6.   


    呵呵,先顶一下1、2楼的!小弟先谢谢大家了!
    cuckoo1 说的好像很对哦,不过这三张表是分别有线程在频繁扫描的,再加上用户的操作,可能就是高并发的了,所以就分了3个表,不知道这样是不是合理?