我正在尝试提供一个SQL查询,该查询可以找到DNN网站中最近编辑过的所有网页,但CreatedOnDate
或LastModifiedOnDate
值似乎都不是非常有用 - 例如,LastModifiedOnDate
表格中的HtmlText
列似乎每当内容编辑器更新时都会更新,只需点击“编辑”即可。 (即使他们实际上没有做出任何改变)。
例如,此查询会返回自2018-01-01以来实际未更改的页面的大量网址:
select distinct tu.url
from HtmlText ht
join TabModules tm
on ht.moduleid = tm.moduleid
join Modules m
on tm.moduleid = m.moduleid
join Tabs t
on tm.tabid = t.tabid
join TabUrls tu
on t.tabid = tu.tabid
where ht.LastModifiedOnDate >= '2018-01-01'
在数据库中是否有一些我不了解的地方可以更准确地跟踪更改?
修改
事实证明,找到DNN网站中已更改页面的最佳方法是加入TabVersions表,例如:
select distinct replace(t.tabpath, '//', '/'), u.email, u.displayname
from HtmlText ht
join TabModules tm
on ht.moduleid = tm.moduleid
join Tabs t
on tm.tabid = t.tabid
join TabVersions tv
on t.TabID = tv.tabid
join Users u
on tv.createdbyuserid = u.userid
where tv.CreatedOnDate >= '2018-03-01'
答案 0 :(得分:1)
每个Tab,TabModule设置和模块内容(取决于模块本身)都会跟踪修改日期。甚至是HTMLText。 是的,无论对设置或内容进行实际更改,按下更新按钮时日期都会更新。
但是,只需打开设置即可更新LastModifiedOnDate。
您的查询似乎不正确。我运行它并没有返回我修改的最新HTMLText。仅当删除TabUrls上的内部联接时,才返回所有模块。所以我会这样做:
SELECT HtmlText.ModuleID, TabModules.ModuleTitle, Tabs.TabName, TabUrls.Url
FROM HtmlText
INNER JOIN TabModules ON TabModules.ModuleID = HtmlText.ModuleID
INNER JOIN Tabs ON Tabs.TabID = TabModules.TabID
LEFT OUTER JOIN TabUrls ON TabUrls.TabId = Tabs.TabID
ORDER BY HtmlText.LastModifiedOnDate DESC