2012-09-06 62 views
0

我想开发一个SQL查询来帮助我从我的基于ASP.NET的网站提取一些数据。我正在使用WebMatrix在基于ASP.NET的网站上处理SQL压缩数据库(sdf)。需要帮助开发SQL查询

我试图在我的网站上实现一个代码来做每月春季清理数据库。我需要删除那些由用户创建但从未激活的帐户。因此,为了释放用户ID并管理数据库大小,我想我会在数据库上运行一个查询,以获取那些尚未被用户确认的帐户,并且他们的创建日期已经过去了20天。

数据库结构是我的用户表被称为“用户”。它有一个UserID(自动编号),Email,FullName等字段。

ASP的WebSecurity创建的表称为“webpages_Membership”。它具有UserID(自动编号),CreationDate,IsConfirmed(是否已激活帐户)等字段。

我不善于开发SQL查询。我面临的问题是,当使用Membership.DeleteUser方法删除用户并将参数设置为DeleteAllRecords时,它会删除我的用户表中的相关用户行,而它在其自己的表“webpages_Membership”中没有任何内容。当用户尝试登录时,它只会检查我的用户表中是否存在Email(用户标识)。因此,从长远来看,在“用户”表中不存在的帐户出现在“网页会员”中,因为它们已被删除。熟悉WbeSecurity行为的人员必须经历以上所有情况。

我试图开发一个查询,它将查找“webpages_Membership”表,让我将那些IsConfirmed字段设置为False的行(意味着这些帐户尚未激活),并确保“webpages_Membership”中的UserID字段“也存在于”用户“表中(这将确保帐户先前未被删除)。

+3

准确地写下这个问题, – NoNaMe

+0

我不得不编写关于WebSecurity代码如何运作的背景。因为它的行为,我无法为它写一个合适的查询。 –

+0

发布你到现在为止的代码,以开始一些事情。如果可能的话,改进显示表结构的方式,以便可以使用它。如果你还发布一些数据来测试,那更好。 – Yaroslav

回答

0
select wm.* from webpages_Membership wm inner join Users u 
on wm.UserID = u.UserID 
Where wm.IsConfirmed = 'false' 
and DATEADD(dd,20,wm.CreationDate) <= getdate() 
+0

感谢您的回复。我试图在MS Access中的虚拟数据库结构上进行查询。它给我一个错误未定义的函数GetDate()。此功能在MS Access上不可用? –

+0

尝试使用现在() – AnandPhadke

+0

我已经在我的SQL紧凑型数据库(它可以识别GetDate)中应用您的查询。尽管查询正在返回相关的行,但日期函数不能正常工作。它的返回行的创建日期甚至少于20.我需要自创建日期以来超过20天的帐户。 –