Pregunta

Hola chicos, tengo la siguiente consulta y para la vida de mí no parecen poder traducirlo en JPQL. El SQL de trabajo es:

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

Mi débil intento de traducirlo es el siguiente:

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

Gracias de antemano por cualquier luz que puede brillar!

¿Fue útil?

Solución

Si entiendo su derecho de consulta (seleccionar las entidades que tienen el mayor copyNumber entre las ENTIDADES con el mismo jobId), lo siguiente debería funcionar:

SELECT o 
FROM PrintDetailEntity o 
WHERE o.copyNumber = 
    (SELECT MAX(e.copyNumber) FROM PrintDetailEntity e WHERE o.jobId = e.jobId)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top