关于模拟大赛的一些sql

起初,我没有在C#程序中完成本地数据的更新。

那么网站所需的数据是通过视图完成的,显然这样降低了网站的效率。

视图创建语句如下:

create view newmnds.v_account as 
SELECT N.user_account as account,N.user_name AS name,N.user_mt4Account as mt4Account,M.BALANCE AS bal,N.user_initialBal AS initBal 
FROM mt4.mt4_users AS M RIGHT JOIN newmnds.account AS N ON M.LOGIN = N.user_mt4Account;

通过这个视图,就能查询到本地用户在mt4库中的信息(通过sql:select * from newmnds.v_account)。事实上,应该将网站需要的信息保存到本地表,这样每次刷新网页就能避免

一次两表联查。实现方法就是在C#程序中对本地表中的数据进行更新

更新account表中的user_balance的sql如下:

update newmnds.account inner join mt4.mt4_users on account.user_mt4Account = mt4_users.LOGIN SET account.user_balance = mt4_users.BALANCE ,account.user_updateTime = unix_timestamp();

 

因为模拟大赛的排名是按照账号余额和交易手数来进行的,因此需要统计每个用户的交易手数。

更新account表中的user_orderTotal的sql如下:

update newmnds.account inner join newmnds.trades on account.user_mt4Account = trades.login set account.user_orderTotal = (select count(*) from newmnds.trades where login = account.user_mt4Account);

网站页面也需要每个用户的交易信息,因此起初也是创建了一个关于交易信息的视图。

CREATE VIEW newmnds.v_orders AS  
select N.user_mt4Account AS account,M.TICKET AS id ,M.VOLUME AS volume ,M.OPEN_TIME AS openTime,M.OPEN_PRICE AS openPrice,M.CLOSE_TIME AS closeTime,M.CLOSE_PRICE AS closePrice,M.COMMISSION AS commission ,M.PROFIT AS profit,M.SYMBOL AS symbol,M.SL,M.TP,M.SWAPS
 from mt4.mt4_trades AS M right join newmnds.account AS N on M.LOGIN = N.user_mt4Account;

然后根据视图就能每个用户的交易信息查出,但是这样依然存在效率问题,而且更大的问题是交易信息是根据mt4表查出来的,交易记录是最近一段时间的,因此是不全的。

解决办法就是,在本地再创建一个trades表,专门保存每个用户的交易信息。

然后在利用C#程序实时更新这个trandes表。

replace into newmnds.trades (ticket,login,symbol,volume,open_time,open_price,SL,TP,close_time,close_price,profit,SWAPS,commission,updatetime) 
select TICKET ,LOGIN ,SYMBOL,VOLUME,OPEN_TIME,OPEN_PRICE,SL,TP,CLOSE_TIME,CLOSE_PRICE,PROFIT,SWAPS,COMMISSION,unix_timestamp() from mt4.mt4_trades;

通过replace into 完成 trades表的更新。

 

注:mysql 和 mssql 在关联表更新数据的sql有些差异:

mssql的sql类似这样:

update newmnds.account set N.user_balance = M.BALANCE from newmnds.account AS N left join mt4.mt4_users AS M on N.user_mt4Account = M.LOGIN;

 

 

 

 

posted @ 2014-05-27 17:23  小刘_php  阅读(153)  评论(0)    收藏  举报