2016-10-29 2 views
0

나는 Collection<Campaign>을 가진 Sponsor 클래스를 가지고 있습니다. 각 Campaign에는 Sponsor 하나만 있습니다. 예를 들어MIN() 연산자와 JPQL에서 필터링 된 쿼리를 만드는 방법은 무엇입니까?

, 나는 그것이있는 경우 :

SELECT MIN(s.campaigns.size) FROM Sponsor s; 

그것은 최소한의 캠페인이 스폰서의 campaigns.size을 반환합니다.

하지만 스폰서 당 c.attribute = null 인 캠페인 'COUNT'을 (를) 원하는 경우 최소값을 반환 하시겠습니까?

내가 될 수 얻기 위해 원하는 것을 시각적 예 :

select min(select count(c) from Campaign c where c.sponsor.id=s.id and c.finishMoment is null) from Sponsor s; 

것은이 함수 MIN으로 SELECT를 포함 할 수없는 점이다.

+4

질문을 편집하고 샘플 데이터와 원하는 결과를 제공하십시오입니다. –

+0

이제 게시물에 문제에 대한 추가 정보가 있습니다. – atila665

답변

0

찾고 싶은 말을하기가 어렵습니다. 이 줄을 따라 뭔가가 있습니다. 당신이 계산에 의해 선택 및 주문을 할 그냥 당신이해야 할 것은 first result

죄송를 취할 수 있도록

** 죄송 아닌 JPQL 사람,하지만 분명히 당신은 첫 번째 결과를 취할 수 있습니다 참여를 해봅시다.하지만 아이디어를 얻으실 수 있습니다.

SELECT Campaign.id,COUNT(Campaign.id) 
FROM Campaign 
JOIN Sponsor on (Sponsor.id = Campaign.id) 
WHERE finishMoment is null 
GROUP BY Campaign.id 
ORDER BY COUNT(Campaign.id) 

은 **이 SQL

SELECT MIN(sponsorCount) 
FROM (SELECT Campaign.id,COUNT(*) sponsorCount 
     FROM Campaign 
     JOIN Sponsor on (Sponsor.id = Campaign.id) 
     WHERE finishMoment is null 
     GROUP BY Campaign.id); 
+0

SQL이 아닌 JPQL 언어로이 작업을 수행하도록 지정해야합니다. 그래서 "sponsorCount"함수에 MIN()을 사용할 수 없습니다. – atila665

+0

JPQL에서는 작동하지 않습니다. 게다가 스폰서 당 finishMoment = null 인 최소 캠페인을 원합니다. 그리고 당신의 셀렉트 리턴과 이드 – atila665