如何使用多个isdescendantnode使用order

时间:2017-03-15 21:38:52

标签: cq5 aem jcr jcr-sql2

我试图从jcr中的不同区域抓取多个相同类型的节点,并按日期排序。

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

这将返回正确的结果集,但输入顺序不正确。实际上,将DESC更改为ASC并不会以任何方式改变结果。

我目前的解决方案是执行多个查询并执行一个允许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个节点,使后一个查询无法使用。有没有办法在不使用ORDER BY的情况下使用UNION

1 个答案:

答案 0 :(得分:0)

初始查询现在正在运行。似乎有一些其他因素导致ORDER BY没有给出有效的结果。

为了澄清您在使用多个ORDER BY时可以ISDESCENDANTNODE