복붙노트

[SQL] HQL : 그것은 내부 하위 쿼리에 가입 수행 할 수 있습니까?

SQL

HQL : 그것은 내부 하위 쿼리에 가입 수행 할 수 있습니까?

위의 그림은 I는 시간을 통해 부품의 위치를 ​​기록하는 데 사용되는 데이터베이스 구조의 간략화 된 버전이다. 나는 각 위치의 현재 항목의 목록을 반환하는 다음과 같은 SQL 쿼리를 썼다 :

select * 
from ItemLocationLog l
inner join 
(select g.idItemLocationLog, max(g.dateTime) as latest
from ItemLocationLog g
group by g.idItem)
as i 
on l.idItem = i.idItem and l.dateTime = i.latest

제가하는 데 문제는 내가 HQL에 그것을 변환 할 것입니다,하지만 난 내부 하위 쿼리에 가입 수행 할 수있는 구문을 발견하지 않은,이 지원되지 않는 것 같다. HQL (또는 기준)에 위를 변환하거나 I이 경우 표준 SQL 쿼리를 사용해야 할 것입니다 방법이 있나요? 감사.

해결법

  1. ==============================

    1.http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-subqueries

    http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-subqueries

    서브 쿼리 대신 where 절의 일부입니다 있도록 쿼리를 다시 작성할 수 있습니다. 서브 쿼리에 l.idItem을 참조하기

  2. from https://stackoverflow.com/questions/10624794/hql-is-it-possible-to-perform-an-inner-join-on-a-subquery by cc-by-sa and MIT license