数据库有三张表,如下
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张表中返回单的信息?
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
呵呵,先顶一下1、2楼的!小弟先谢谢大家了!
cuckoo1 说的好像很对哦,不过这三张表是分别有线程在频繁扫描的,再加上用户的操作,可能就是高并发的了,所以就分了3个表,不知道这样是不是合理?