我正在使用.net会员资格进行用户管理,我想为管理员创建一个列出所有用户详细信息的页面。
Membership系统在我的sql数据库服务器中创建了表,我试图通过查询获取所有信息,但不知怎的,查询什么也没有返回。
这些是在服务器中创建的相关表格:
我尝试了这个查询:(ms sql 2008)
select u.UserName, m.Email, m.CreateDate, m.LastLoginDate, r.RoleName from dbo.aspnet_Users u, dbo.aspnet_Membership m, dbo.aspnet_UsersInRoles uir, aspnet_Roles r where (u.UserId=m.UserId) and (m.UserId=uir.UserId) and (uir.RoleId=r.RoleId)
但它什么也没有返回,但是当我尝试时:
select u.UserName, r.RoleName from dbo.aspnet_Users u, dbo.aspnet_UsersInRoles uir, aspnet_Roles r where (u.UserId=uir.UserId) and (uir.RoleId=r.RoleId)
它返回一个包含用户名和角色的表。 我想问题是使用Membership表userID字段,但我不知道如何解释它。
答案 0 :(得分:0)
试试这个:
where (u.UserId=uir.UserId) and (m.UserId=u.UserId) and (uir.RoleId=r.RoleId)
答案 1 :(得分:0)
你可以试试这个:
SELECT u.UserName, r.RoleName FROM dbo.aspnet_Users u
INNER JOIN dbo.aspnet_UsersInRoles uir
ON u.UserId=uir.UserId
INNER JOIN aspnet_Roles r
ON uir.RoleId=r.RoleId
答案 2 :(得分:0)
用 LEFT JOIN 替换每个 INNER JOIN 会得到你想要的:
SELECT u.UserName, r.RoleName FROM dbo.aspnet_Users u
LEFT JOIN dbo.aspnet_UsersInRoles uir
ON u.UserId=uir.UserId
LEFT JOIN aspnet_Roles r
ON uir.RoleId=r.RoleId