0

我正在使用 .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 字段上,但我不知道如何真正解释它。

4

3 回答 3

0

尝试这个:

where (u.UserId=uir.UserId) and (m.UserId=u.UserId) and (uir.RoleId=r.RoleId)
于 2013-07-18T12:56:40.780 回答
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
于 2013-07-18T13:48:09.150 回答
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
于 2021-05-20T20:16:51.687 回答