Как создать представление с несколькими ссылками на другую таблицу - PullRequest
0 голосов
/ 09 мая 2018

У меня есть две таблицы Users и Details. UserId - это первичный ключ от Users.

С другой стороны, столбец UserId из Details является ссылкой из таблицы Users.

Таблица: пользователи

UserId    FirstName    Lastname
1         John         Wick
2         Black        Panther
3         Lebron       James

Таблица: Подробности

UserId    ManagerId    SupervisorId
1         3            2
2         3            1
3         3            1

Если бы я выполнил запрос вроде:

SELECT * FROM Users INNER JOIN Details on Users.UserId = Details.UserId

Результаты будут:

Таблица: Подробности

UserId    FirstName  LastName ManagerId  SupervisorId
1         John       Wick     3          2
2         Black      Panther  3          1
3         Lebron     James    3          1

То, что я пытаюсь достичь, это:

UserId    FirstName  LastName ManagerId  SupervisorId
1         John       Wick     Lebron     Black
2         Black      Panther  Lebron     John
3         Lebron     James    Lebron     John

В основном использовать другой столбец из таблицы его ссылочного ключа. Как бы я это сделал?

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вы можете присоединиться к таблице несколько раз. Таким образом, вы можете присоединить таблицу Users к таблице Details, а затем снова вернуться к таблице Users. Вам просто нужно дать таблице псевдоним.

select
    u.UserId, u.FirstName, u.LastName,
    m.FirstName as ManageId,
    d.FirstName as SupervisorId
from
    Users u
    inner join Details d
        on (u.UserId=d.UserId)
    inner join Users m -- Manager
        on (m.UserId=d.ManagerId)
    inner join Users s -- Supervisor
        on (s.UserId=d.ManagerId)
0 голосов
/ 09 мая 2018

Идентификатор для руководителя и менеджера есть в таблице пользователей? Вы бы присоединились к той же таблице с псевдонимом несколько раз:

SELECT Details.*, U1.FirstName AS UserFirstName, U1.LastName AS UserLastName, 
U2.FirstName AS ManagerFirstName, U2.LastName AS ManagerLastName,
U3.FirstName AS SupervisorFirstName, U3.LastName AS SupervisorLastName
FROM Details 
INNER JOIN Users U1 ON U1.UserId = Details.UserId
INNER JOIN Users U2 ON U2.UserID= Details.ManagerID
INNER JOIN Users U3 ON U3.UserID= Details.SupervisorID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...