日期:2014-05-17  浏览次数:20871 次

hql 自连接 self left join
我有一张表table ,字段为dtget,an,vph

可能会有这么一条数据
dtget      an      vph
2012       11.21   15

这条数据vph代表pH值,为15是非法的,但an是有效的,我想保留这条数据,但不输出15

我用hibernate查询数据
select model.dtget as dtget, model1.an as an, model2.vph as vph
from table t1 left join table t2  left join table t3
where t1.dtget = t2.dtget and t1.dtget = t3.dtget and (t3.vph between 0 and 14)

这样使用left join是错误的

该怎么解决?
或者有其他方法可以满足我的需求?
hql self?jion self?join

------解决方案--------------------
额 好吧 忘了这是hql了 你可以写成这种格式
select b from A a left join a.b b where 1=1 ...

------解决方案--------------------
刚sql写错了,CASE判断少了个AND 

 SELECT 
     t.dtget , t.an , (CASE WHEN  t.vpn >=0 AND t.vph <= 14 THEN t.vph ELSE null END ) as 
  vpn
 FROM
     table  t
 WHERE 
     t.vph between 0 and 15


WHERE 条件你自己看情况是不是要去掉