2013-10-23 43 views
-3

我正在使用asp.net實現WebSite。如何配置SQL語法

我通過aspnet_regsql.exe配置了成員資格數據庫。

這是aspnet_regsql製作的數據庫圖表。

enter image description here

我想下面列

**[U.UserName, M.Email, M.LastLoginDate, R.RoleName ]** 

aspnet_Users AS U 

aspnet_UsersInRols AS UR 

aspnet_Roles AS R 

aspnet_Membership As M 

我不知道我怎樣才能加入這些表來構建數據。

你能給我建議我怎麼配置SQL語法?

我試過這個查詢但沒有正確的結果。

SELECT U.UserName, M.Email, M.LastLoginDate, R.RoleName 
FROM  aspnet_Users AS U, 
      aspnet_UsersInRoles AS UR, 
      aspnet_Roles AS R, 
      aspnet_Membership AS M 
WHERE U.UserId = UR.UserId AND UR.RoleId = R.RoleId AND U.UserId = M.UserId 

在此先感謝您。

+0

您是否熟悉外鍵及其用途? **提示:**查看'aspnet_Users'中的'UserId','aspnet_UsersInRoles'和'aspnet_Roles'中的'aspnet_Membership','aspnet_UsersInRoles'和'RoleId'。 – Tim

+1

您使用的語法已過時。嘗試並使用正確的JOIN語句。即'SELECT FROM table1 JOIN Table2 ON table1.column = Table2.column',而不是'FROM Table 1,Table 2 WHERE Table1.column = table2.coulmn'。 – SchmitzIT

回答

1
SELECT 
    u.UserName, 
    m.Email, 
    m.LastLoginDate, 
    r.RoleName 
FROM 
    aspnet_Users u 
LEFT JOIN 
    aspnet_Membership m 
ON u.UserId = m.UserId 
LEFT JOIN 
    aspnet_UsersInRoles ur 
ON u.UserId = ur.UserId 
INNER JOIN 
    aspnet_Roles r 
ON ur.RoleId = r.RoleId 

的表aspnet_Membershipaspnet_UsersInRoles留加入,因爲我不知道他們是否會在每一個用戶的詳細信息。

+0

我真的很感謝你的幫助。 – user2423434

1

這應該讓你開始。你基本上使用的鍵列連接,其中這些列中的值匹配的數據:

SELECT 
    U.Username 
    , M.Email 
    , M.LastLoginDate 
    , R.RoleName 
FROM 
    aspnet_Users AS U 
    JOIN aspnet_UserInRoles AS UR ON U.UserId = UR.UserId 
    JOIN aspnet_Roles AS R ON R.RoleId = UR.RoleId 
    JOIN aspnet_Membership AS M ON U.UserId = M.UserID 

您指定哪些類型的JOIN(默認= INNER JOIN),這將決定當沒有比賽做什麼,哪些列將兩個表中的數據組合在一起。

對於Users和UserInRoles,它是UserID字段。

我建議你閱讀關於數據庫連接。這裏是一個開始:

SQL Server Introduction to JOINs - SQLAuthority.com

+0

謝謝你的幫助。我需要學習更多關於SQL語法的知識。 – user2423434