У меня есть таблица с именем RoleDetails
с этой структурой:SQL Server 2012 Query - внешний ключ из той же таблицы
ROLE_ID - PK ,
NAME ,
PARENT_ROLE_ID FK ,
CREATED_BY_ID ,
MODIFIED_BY_ID
Другая таблица является user_details
USER_ID ,
USERNAME ,
FULLNAME
Как запросить эту таблицу так, в результирующем наборе Я получаю RoleName, RoleId, ParentRoleId, ParentRoleName, CreatedByName и ModifiedByName.
До сих пор я пытался:
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;
Ю. присоединиться к самому столу, один раз, чтобы получить RoleName и один, чтобы получить Родитель RoleName – HLGEM