-3

我正在使用 asp.net 实现网站。

我通过 aspnet_regsql.exe 配置了会员数据库。

这是 aspnet_regsql 制作的数据库图。

在此处输入图像描述

我想用下面的列构造数据

**[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

先感谢您。

4

2 回答 2

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 JOIN 简介 - SQLAuthority.com

于 2013-10-23T08:23:51.910 回答
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左连接,因为我不知道它们是否会为每个用户提供详细信息。

于 2013-10-23T08:28:15.180 回答