2012-09-06 113 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天的帳戶。 –