select b.creditType,d.EmployeeName from 
   ptshare b inner join PtEmployeeRelation c on b.objType=c.objType and b.objId=c.objID 
   inner join ptEmployee d on c.employeeId=d.EmployeeId 
   where d.Employeelevel >=b.startLevel and d.Employeelevel<=b.endLevel 
   and b.dataID='CS18' and b.datatype='3'select b.creditType,d.employeeName from 
PtParentData a,PtShare b,PtEmployeeRelation c,PtEmployee d
where  a.parentID = b.dataId and c.employeeId=d.employeeId  and d.employeeLevel  >=b.startLevel 
and  d.Employeelevel<=b.endLevel
and a.dataId='ORG88' and b.dataType=3
HQL 没有关联对象 怎样使用 join ?  

解决方案 »

  1.   

    请问一下你用的什么工具呀,这样的内联接查询,你首先要确定好它们表之间的关系,建立对应的主外键关系,然后在MyEcilipse里面把所有关联的表导出来,它会自动生成对应的表的xml文件,中间已经实现了对应的关系,比如说一对多,多对多等关系,然后你只要用HQL语句查询出来即可~~
    例如:from Ptshare(即表对应的对象名) where 后面跟条件我上面讲得有些抽象,我不知道你具体是怎样做的,你能告诉我你是用什么工具开发的,然后表与表之间的关系么,这样一堆sql语句看起来有点晕晕的~~~
      

  2.   

    一般的话,要连在一块儿之间的表, 都有关系, 你可以不关系搞好了,就不用 写hql语句了
      

  3.   

    我就很不明白了,这干嘛一定要用hql语句来解决了呢?  直接createSQLQuery不就行了么???  费解...
      

  4.   

    正好,我也想问个类似的问题哦,类似于你的 b.objType=c.objType
    如果我两个表之间没有外键关系,而我又想实现 左外联接那样,以一个表为准,另一个表的数据查不到就填充为NULL