在存储过程中加入3个表

时间:2014-11-27 13:41:49

标签: sql-server stored-procedures

我有3个表,其中一个角色具有许多权限,这些权限位于Roledetail表中,我必须从这些表中找到PermissionName, RoleId, RoleName, RoleDescription

[Role], Permission, RoleDetail

[Role]包含以下列:

RoleID, RoleName, RoleDescription

和表格Permission包含以下列:

PemissionId, PermissionName

RoleDetail包含以下列:

RoleDetailId, PermissionId, RoleID

我想根据RoleId, RoleName, RoleDescription, PermissionName表中的给定permissionId显示列RoleDetail 在这里我到目前为止

Alter PROCEDURE usp_GetRoleDetails
@proleId int    
AS
BEGIN

    SET NOCOUNT ON;

Select r.RoleId,r.RoleName,r.[Description],permissionName from 
[Role]r
Inner join RoleDetail d on  d.RoleDetailId = r.RoleID
Inner join Permission p on p.PermissionId =  d.PermissionId
where r.RoleId = @proleId


END
GO

2 个答案:

答案 0 :(得分:2)

我想你想要这个

Select RoleId,RoleName,RoleDescription,permissionName from 
RoleDetail 
Inner join [Role] on RoleDetail.RoleDetailId = Role.RoleID
Inner join Permission on Permission.PemissionId =  RoleDetail.PemissionId

答案 1 :(得分:0)

一个简单的SQL连接可以解决这个问题。 SQL连接有助于从您的案例中获取多个表中的数据。连接所需要的是让表具有主键 - 外键关系,例如您的案例中的PermissionId和RoleDetail列。但是要非常小心,如果join的on子句不正确,join也可以给你重复的记录。有关SQL连接的介绍,请参阅here