[英]JPQL greatest-n-per-group query
有沒有一種方法可以使用JPQL編寫此查詢:
select *
from "tbCita" c inner join "tbAccionCita" ac1
on c."citaId" = ac1."citaId"
left outer join "tbAccionCita" ac2 on ( c."citaId" = ac2."citaId" and
(ac1."fechaAccionCita" < ac2."fechaAccionCita"
or ac1."fechaAccionCita" = ac1."fechaAccionCita"
and ac1."accionCitaId" < ac2."accionCitaId")
)
inner join "tbUsuarioCita" uc
on c."citaId" = uc."citaId"
inner join "tbUser" u
on uc."userId" = u."userId"
where
ac2."accionCitaId" is null
and u."userId" = 1
fechaAccionCita是一個日期:)
我正在嘗試為userId = 1的所有約會(tbCita)獲取最新狀態(一個約會具有多個狀態)。
該查詢工作正常,但是在JPQL中,它給了我以下錯誤:
從句引用了兩個不同的從句元素
這里查詢:
SELECT c "
+ "FROM Cita c "
+ "INNER JOIN c.usuarioCita u "
+ "INNER JOIN FETCH c.accionCita a "
+ "LEFT OUTER JOIN c.accionCita a2 on (a.fechaAccionCita < a2.fechaAccionCita or "
+ "a.fechaAccionCita = a2.fechaAccionCita and a.accionCitaId < a2.accionCitaId) "
請問以下工作嗎? 另外,您確定OR語句中的邏輯按預期工作嗎? 似乎您可能需要附加一組括號。
select c
from tbCita c, tbAccionCita ac1, tbUsuarioCita uc, tbUser u
left join tbAccionCita ac2 on (
c.citaId = ac2.citaId
and (ac1.fechaAccionCita < ac2.fechaAccionCita
or ac1.fechaAccionCita = ac1.fechaAccionCita
and ac1.accionCitaId < ac2.accionCitaId))
where c.citaId = ac1.citaId
and c.citaId = uc.citaId
and uc.userId = u.userId
and ac2.accionCitaId is null
and u.userId = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.