2017-03-15 12 views
6

jcr의 여러 영역에서 같은 유형의 여러 노드를 가져 와서 날짜순으로 정렬하려고합니다.order by 다중 isdescendantnode를 사용하는 방법

SELECT * FROM [social:asiResource] 
WHERE [sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
(ISDESCENDANTNODE([/path/to/content]) OR 
ISDESCENDANTNODE([/path/to/content])) 
ORDER BY [cq:lastModified] DESC 

올바른 결과 집합을 반환하지만 올바른 순서가 아닙니다. 실제로 DESCASC으로 변경해도 어떤 방식 으로든 결과가 변경되지는 않습니다.

내 솔루션은 현재 다중 쿼리를 수행하고 ORDER BY이 작동해야하는 통합을 수행하는 것입니다.

SELECT * FROM [social:asiResource] 
WHERE [sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
ISDESCENDANTNODE([/path/to/content]) 
UNION 
SELECT * FROM [social:asiResource] WHERE 
[sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
ISDESCENDANTNODE([/path/to/content]) 
ORDER BY [cq:lastModified] DESC 

불행히도 나는 후자의 쿼리를 사용할 수 없게 만드는 것을 통해 약 30 개의 노드를 찾고 있습니다. UNION을 사용하지 않고 ORDER BY을 사용할 수 있습니까?

답변

0

초기 쿼리가 작동 중입니다. 유효한 결과를 제공하지 않는 ORDER BY으로 연결되는 다른 요인이있는 것으로 보입니다.

ISDESCENDANTNODE의 복수형을 사용하는 경우 ORDER BY을 명확히 할 수 있습니다.

+0

또한'NOT CONTAINS'는 질의를 상당히 늦추는 것처럼 보입니다. – apothic