SQL Server INNER JOIN会产生问题吗?

时间:2011-03-10 11:26:37

标签: sql sql-server sql-server-2005 tsql

我需要使用Inner Join加入5个表。

这是一种很好的做法,还是会在以后的几年中出现任何不一致的情况?

看看

SELECT Distinct(email)
FROM AP_GROUPS_INTO_ORGANIZATION M 
INNER JOIN GROUPSDB G on G.ID = M.GROUPID
INNER JOIN aspnet_Roles r ON R.RoleName = G.GROUPNAME
INNER JOIN aspnet_UsersInRoles U ON U.RoleId = R.RoleId  
INNER JOIN aspnet_membership a on a.UserId = U.UserId
WHERE G.GROUPNAME = 'GROUP001'

2 个答案:

答案 0 :(得分:1)

这应该没问题。我看到你在查询中使用aspnet表,我建议不要先修改它们的结构或索引而不先进行一些测试,以确保你不会产生新的问题。

如果您的数据高度标准化,那么拥有此数量的连接非常常见。

答案 1 :(得分:0)

我唯一要改变的是,它的基础是将基于你的标准限制的表放在前面而不是在连接表中较低的位置,就像把你的组表放在前面那样......另外,缩进有助于清楚地显示表格之间的关系。

SELECT
      Distinct(email)
   FROM
      GROUPSDB G
         INNER JOIN AP_GROUPS_INTO_ORGANIZATION M 
            ON G.ID = M.GROUPID
         INNER JOIN aspnet_Roles r
            ON G.GROUPNAME = R.RoleName
            INNER JOIN aspnet_UsersInRoles U 
               ON R.RoleId = U.RoleId
               INNER JOIN aspnet_membership a 
                  on U.UserId = a.UserId
   WHERE
      G.GROUPNAME = 'GROUP001'