2013-04-23 3 views
0

이벤트로 이동하는 친구 수로 정렬 된 이벤트 목록을 반환하는 명명 된 쿼리를 구현해야합니다. 친구 이벤트의 목록JPQL 쿼리 - 개수로 정렬

SELECT r.event 
    FROM RSVP AS r 
    JOIN r.event.rsvpList rr 
    WHERE r.profile.user.uuid = :userUuid 
    AND r.rsvpStatus = RSVPStatus.ATTENDING 
    GROUP BY r.event 
    ORDER BY COUNT(rr) DESC 

또는 다른 예 : I 시도

 SELECT r.event 
     FROM RSVP AS r 
     WHERE r.profile IN 
      ( SELECT f.profileTo 
       FROM Friend f 
       WHERE f.profileFrom.user.uuid = :userUuid 
      ) 
     AND r.rsvpStatus = :rsvpStatus 
     GROUP BY r.event 

예를 들어,이 쿼리는 이벤트에가는 모든 사람들의 수를 기준으로 정렬 이벤트의 목록을 반환 다음을 수행하십시오.

그러나이 쿼리는 친구에게 가서 건너 뛰기 이벤트를 반환했습니다. 어 이벤트.

이 내 DB의 단순화이다 : 내가하지 수 있도록 Scheme

+0

@Aquillo, 죄송합니다. 미리 질문을 올리십시오. –

+0

은 주문의 문제입니까, 아니면 일반적인 결과입니까? – wrschneider

답변

1

당신은 당신의 실체를 게시하지 않은,하지만 난 생각이 작동합니다 :

SELECT r.event, (
    SELECT count(*) 
    FROM RSVP rr 
    WHERE rr.event = r.event 
     AND rr.profile IN 
     (
      SELECT f.profileTo 
      FROM Friend f 
      WHERE f.profileFrom.user.uuid = :userUuid 
     ) 
    ) count 
FROM RSVP AS r 
WHERE r.profile.user.uuid = :userUuid 
    AND r.rsvpStatus = RSVPStatus.ATTENDING  
ORDER BY 2 DESC 

것은 여기에있다 HQL은 ORDER BY 절에서 서브 쿼리를 지원하지 않으므로 주문하기 위해 하나 이상의 컬럼을 선택해야합니다.

+0

감사합니다. 결과적으로이 쿼리를 사용했습니다. –