【问题标题】:SQL2 JCR query issue with AEM 6AEM 6 的 SQL2 JCR 查询问题
【发布时间】:2015-12-10 04:41:45
【问题描述】:

我有以下查询,它没有产生任何结果,但没有错误。我正在尝试选择所有不是“精选新闻稿”并且属于某种类型的页面,例如“公告”。

SELECT parent.* FROM [cq:Page] AS parent INNER JOIN [nt:base] 
AS child ON ISCHILDNODE(child,parent) WHERE ISDESCENDANTNODE(parent,     '/content/acme/en_US/site-content/content-modules/resources/press-releases')  
AND (NOT CONTAINS(child.[cq:tags], 'acme-    www:FeaturedResources/FeaturedPressRelease*')) 
AND (CONTAINS(child.[cq:tags], 'acme-www:PressReleaseType/Announcement')) 
AND child.[pressReleaseDate] > CAST('2015-01-01T00:00:00.000Z'  AS DATE)  
AND child.[pressReleaseDate] < CAST('2016-01-01T00:00:00.000Z'  AS DATE)  
order by child.[jcr:title]

如果我删除“AND (NOT CONTAINS (...)”行,我会得到正确的结果。另外,如果我把那行放回去,并删除“AND (CONTAINS(...”) 行,我会得到正确的结果。但是将两条线同时放在那里不会给我任何结果。有些页面应该是合格的,即它们不是精选新闻稿,它们是类型公告,所以在我看来,这在逻辑上应该可行。

有谁知道查询不起作用的任何原因吗?我是 SQL2 新手,我在网上找不到任何类似的例子,只是一般性的语法描述。

谢谢!

【问题讨论】:

    标签: aem jcr jcr-sql2


    【解决方案1】:

    我不确定您的一个标签中的 splat 是否应该是通配符,但如果是这样,可能会使用 LIKE % 语法。 cq:tags 是一个字符串 [],但我没有运气使用这样的包含...希望其他人能说出原因。你可以试试这样的...

    SELECT parent.* FROM [cq:Page] AS parent INNER JOIN [nt:base]
    AS child ON ISCHILDNODE(child,parent) WHERE ISDESCENDANTNODE(parent,     '/content/acme/en_US/site-content/content-modules/resources/press-releases')
    AND NOT (child.[cq:tags] = 'acme-www:FeaturedResources/FeaturedPressRelease')
    AND child.[cq:tags] = 'acme-www:PressReleaseType/Announcement'
    AND child.[pressReleaseDate] > CAST('2015-01-01T00:00:00.000Z'  AS DATE)
    AND child.[pressReleaseDate] < CAST('2016-01-01T00:00:00.000Z'  AS DATE)
    order by child.[jcr:title]
    

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多