[英]SQL Server 2012 Query - Foreign Key from Same Table
I have a table named RoleDetails
with this structure: 我有一个名为
RoleDetails
的表,具有以下结构:
ROLE_ID - PK ,
NAME ,
PARENT_ROLE_ID FK ,
CREATED_BY_ID ,
MODIFIED_BY_ID
The other table is user_details
另一个表是
user_details
USER_ID ,
USERNAME ,
FULLNAME
How do I query this table so that in the result set I get the RoleName, RoleId, ParentRoleId, ParentRoleName, CreatedByName and ModifiedByName. 我如何查询该表,以便在结果集中获得RoleName,RoleId,ParentRoleId,ParentRoleName,CreatedByName和ModifiedByName。
So far I have tried: 到目前为止,我已经尝试过:
SELECT
[ROLE_ID] AS ID, r.NAME AS [RoleName],
r.PARENT_ROLE_ID AS [ParentRoleID] ,
(SELECT rd.NAME FROM dbo.ROLES rd
WHERE rd.ROLE_ID = r.PARENT_ROLE_ID ) AS [ParentRoleName],
CONCAT(ud.FIRST_NAME, ' ', ud.LAST_name) AS [CreatedByName] ,
CONCAT(u.FIRST_NAME, ' ', u.LAST_name) AS [LastModifiedByName]
FROM
dbo.ROLES r
LEFT OUTER JOIN
user_details u ON r.MODIFIED_BY = u.USER_ID
LEFT OUTER JOIN
dbo.USER_DETAILS ud ON r.CREATED_BY = ud.USER_ID
WHERE
r.ROLE_ID = @iRoleID;
You will need to join the user_detail
table twice. 您将需要两次连接
user_detail
表。 Once to get the create user and once to get the modify user. 一次获取创建用户,一次获取修改用户。
SELECT rd.Name,
rd.Role_ID,
rd.Parent_role_id,
pr.Name,
ud.userName as CreatedByName,
udm.userName as ModifyByName
FROM RoleDetails as rd
INNER JOIN RoleDetails as pr
ON rd.Parent_Role_Id = pr.Role_id
INNER JOIN User_Detail as ud
on rd.Created_by_id = ud.user_id
INNER JOIN User_Detail as udm
ON rd.Modified_by_user = udm.user_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.