首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

求教,这个HQl语句应该如何写

2013-09-18 
求教,这个HQl语句应该怎么写有四个表BalanceSheet 、ProfitStatement 、CashFlow 、MarketHistory ,都有一个s

求教,这个HQl语句应该怎么写
有四个表BalanceSheet 、ProfitStatement 、CashFlow 、MarketHistory ,都有一个stockData字段

本来条件是传一个stockData的参数stockDataId的,写法已经搞定,就是下面的,现在想传两个甚至三个参数stockDataId0、stockDataId1、stockDataId2,就是同时找出条件等于三个参数的四张表,不知道怎么写了,试了几个,连自己都有点混乱了,求高人解答


return searchPaginated("select bs,ps,cf,mh from BalanceSheet bs, ProfitStatement ps, CashFlow cf, MarketHistory mh" +
" where bs.bbrq = ps.bbrq and ps.bbrq = cf.bbrq and cf.bbrq = mh.bbrq" +
" and bs.stockData = " +stockDataId + " and ps.stockData = "+stockDataId +
" and cf.stockData = "+stockDataId + " and mh.stockData = "+stockDataId +
" order by bs.bbrq desc");

[解决办法]
return searchPaginated("select bs,ps,cf,mh from BalanceSheet bs, ProfitStatement ps, CashFlow cf, MarketHistory mh" +
                " where (bs.bbrq = ps.bbrq and ps.bbrq = cf.bbrq and cf.bbrq = mh.bbrq" +
                " and bs.stockData = " +stockDataId + ") or (bs.bbrq = ps.bbrq and ps.bbrq = cf.bbrq and cf.bbrq = mh.bbrq and ps.stockData = "+stockDataId +
                " ) or (bs.bbrq = ps.bbrq and ps.bbrq = cf.bbrq and cf.bbrq = mh.bbrq and cf.stockData = "+stockDataId + ") or (bs.bbrq = ps.bbrq and ps.bbrq = cf.bbrq and cf.bbrq = mh.bbrq and mh.stockData = "+stockDataId );

试试

[解决办法]

select * from t_balancesheet,t_profitstatement,t_cashflow,t_markethistory
 where t_balancesheet.bbrq = t_profitstatement.bbrq 


and t_profitstatement.bbrq = t_cashflow.bbrq 
and t_cashflow.bbrq = t_markethistory.bbrq and 
(t_balancesheet.stockData=1 or t_balancesheet.stockData=2)


如果 你要查的4张表中都有的列 你还可以用UNION All
比如 4张表完全一样的话

select * from t_balancesheet where stockData=1 or stockData=2
UNION All
select * from t_profitstatement where stockData=1 or stockData=2
.
.
.



[解决办法]
使用in语句 优化下,stockData in (1,2)

热点排行