如何配置SQL语法

时间:2013-10-23 08:15:11

标签: asp.net sql

我正在使用asp.net实现WebSite。

我通过aspnet_regsql.exe配置了Membership Database。

这是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

提前谢谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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保持联系,因为我不知道他们是否会为每个用户提供详细信息。