Files
ZelWiki/ZelWiki.Repository/Scripts/GetSimilarPagesPaged.sql
2025-02-20 15:20:28 +08:00

54 lines
1015 B
SQL

SELECT
P.Id,
P.[Name],
P.Navigation,
P.[Description],
P.Revision,
P.CreatedByUserId,
P.CreatedDate,
P.ModifiedByUserId,
P.ModifiedDate,
@PageSize as PaginationPageSize,
(
SELECT
CAST((Count(0) + (@PageSize - 1.0)) / @PageSize AS INTEGER)
FROM
Page as P
WHERE
P.Id IN
(
SELECT
PT.PageId
FROM
PageTag as RootTags
LEFT OUTER JOIN PageTag as PT
ON PT.Tag = RootTags.Tag
WHERE
RootTags.PageId = @PageId
GROUP BY
PT.PageId
HAVING
((Count(0) / (SELECT COUNT(0) FROM PageTag as iP WHERE iP.PageId = @PageId)) * 100.0) >= @Similarity
)
) as PaginationPageCount
FROM
Page as P
WHERE
P.Id IN
(
SELECT
PT.PageId
FROM
PageTag as RootTags
LEFT OUTER JOIN PageTag as PT
ON PT.Tag = RootTags.Tag
WHERE
RootTags.PageId = @PageId
GROUP BY
PT.PageId
HAVING
((Count(0) / (SELECT COUNT(0) FROM PageTag as iP WHERE iP.PageId = @PageId)) * 100.0) >= @Similarity
)
LIMIT @PageSize
OFFSET (@PageNumber - 1) * @PageSize