SQL2等效于此XPath查询

时间:2014-07-23 06:50:36

标签: cq5 jackrabbit jcr aem jcr-sql2

是否有SQL2查询与以下XPath查询相同:

/jcr:root/content/ancestor//parent/jcr:content

它应该返回以下节点,例如:

/content/ancestor/a/b/c/parent/jcr:content
/content/ancestor/a/parent/jcr:content
/content/ancestor/parent/jcr:content

但不是以下节点:

/content/xxx/a/b/c/parent/jcr:content
/content/xxx/a/parent/jcr:content
/content/xxx/parent/jcr:content

2 个答案:

答案 0 :(得分:1)

以下应该工作:

SELECT * FROM [nt:base] AS s 
  INNER JOIN [nt:base] AS parent
    ON ISCHILDNODE(s, parent)
WHERE
  ISDESCENDANTNODE(s, [/content/ancestor]) AND
  NAME(parent) = 'parent' AND
  NAME(s) = 'jcr:content'

如果s的类型为cq:PageContentparent的类型为cq:Page,您可以使用此信息来加快查询速度:

SELECT * FROM [cq:PageContent] AS s 
  INNER JOIN [cq:Page] AS parent
    ON ISCHILDNODE(s, parent)
WHERE
  ISDESCENDANTNODE(s, [/content/ancestor]) AND
  NAME(parent) = 'parent' AND
  NAME(s) = 'jcr:content'

答案 1 :(得分:-2)

您可以使用crxde enter image description here中的“查询工具”轻松地将xpath转换为sql2,反之亦然