我试图根据最近的日期列出几个子页面,但是对于某些部分,我想要同一文件夹中的前3个文档和某些区域的其余文章。
我当前的SQL语句如下:
DocumentId NOT IN ( IF EXISTS
( SELECT DocumentId
FROM CMS_DocumentCategory
WHERE CategoryId
IN ({%CurrentDocument.Categories.IDs#%})
and DocumentID <> {% CurrentDocument.DocumentId #%} )
BEGIN SELECT TOP 3 DocumentId
FROM CMS_DocumentCategory
WHERE CategoryId
IN {%CurrentDocument.Categories.IDs#%}
and DocumentID <> {% CurrentDocument.DocumentId #%}
ORDER BY Date DESC
END ELSE SELECT 0 AS [value] END )然而,即使删除了整个代码块,web部件仍然只显示前4个或我在top N Documents字段中放置的任何选项。
我希望输出是文章4-6作为例子,但我得到的是第1-3页
发布于 2019-06-19 01:00:11
不确定我是否正确理解了逻辑,但这里是我的2美分,你可以通过两种方式使用sql TOP:
SELECT TOP 100 PERCENT DocumentId FROM CMS_DocumentCategory 或
SELECT TOP 3 DocumentId FROM CMS_DocumentCategory因此,我将为您的页面类型创建两个属性:第一个是TopDocuments,它可以是TOP 100 PERCENT或TOP 3,另一个DocumentsOrderBy可以是空的,例如ORDER BY DocumentCreatedWhen DESC或任何顺序
因此,您的最终查询应该是
DocumentId IN (
SELECT {%TopDocuments%} DocumentId FROM CMS_Document join CMS_DocumentCategory ON CMS_Document.DocumentID = CMS_DocumentCategory.CategoryID
WHERE CategoryId IN {%CurrentDocument.Categories.IDs#%} and DocumentID <> {% CurrentDocument.DocumentId #%}
{%DocumentsOrderBy%}
)https://stackoverflow.com/questions/56636962
复制相似问题