Проблемы с преобразованием SQL-запроса в JPQL (Eclipselink)

Привет, ребята, у меня есть следующий запрос, и я не могу перевести его на JPQL. Рабочий SQL:

select * from TB_PRINT_DETAIL y inner join 
(select JOB_ID,max(COPY_NUM) MAX_COPY_NUM from TB_PRINT_DETAIL  group by JOB_ID  ) x
on y.JOB_ID = x.JOB_ID and y.COPY_NUM = x.MAX_COPY_NUM

Моя слабая попытка перевести это выглядит следующим образом:

select o from PrintDetailEntity o inner join (select o2.jobId, max(o2.copyNumber) as
maxCopyNum from PrintDetailEntity o2 group by o2.jobId ) as x on o.jobId = o2.jobId and
o.copyNum = o2.maxCopyNum where o.printSuppressionReasonEntity is null

Заранее спасибо за любой свет, который вы можете пролить!


person DSmyte    schedule 29.10.2010    source источник


Ответы (1)


Если я правильно понимаю ваш запрос (выберите объекты с наибольшим copyNumber среди объектов с одинаковым jobId), должно работать следующее:

SELECT o 
FROM PrintDetailEntity o 
WHERE o.copyNumber = 
    (SELECT MAX(e.copyNumber) FROM PrintDetailEntity e WHERE o.jobId = e.jobId)
person axtavt    schedule 29.10.2010
comment
Да! Спасибо, я не знаю, почему у меня были такие проблемы с этим. - person DSmyte; 02.11.2010