日期:2014-05-18  浏览次数:20704 次

求教,这个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