【问题标题】:sql query for list of all users details in Membershipsql查询成员中所有用户详细信息的列表
【发布时间】:2013-07-18 12:41:56
【问题描述】:

我正在使用 .net Membership 进行用户管理,我想为管理员创建一个页面,列出所有用户的详细信息。

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 字段上,但我不知道该如何解释。

【问题讨论】:

    标签: asp.net sql-server asp.net-membership sqlmembershipprovider


    【解决方案1】:

    试试这个:

    where (u.UserId=uir.UserId) and (m.UserId=u.UserId) and (uir.RoleId=r.RoleId)
    

    【讨论】:

    • 有什么区别?那也不会返回任何东西
    【解决方案2】:

    你可以试试这个:

    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
    

    【讨论】:

    • @Dvirski : 那么请相应地使用 LEFT JOIN。
    【解决方案3】:

    将每个 INNER JOIN 替换为 LEFT 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多