Как получить имя пользователя, а не идентификатор из той же таблицы в подзапросе Postgresql? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть таблица пользователей: с такими полями, как: имя, фамилия ..., идентификатор менеджера ...,

manager_id - это просто идентификатор другого пользователя.

Когда я запускаюquery:

   SELECT DISTINCT ON(users.id) user.id, CONCAT(users.first_name, ' ', users.last_name) AS \
                'employee', users.email, \
                (SELECT manager_id), \
                (SELECT users.first_name from users where users.id = manager_id) as Manager,\
                (SELECT DISTINCT to_char(auth_user.last_login, 'Mon dd, yyyy')) as Last_Login FROM users INNER JOIN auth_user ON (users.user_id = auth_user.id)

Этот запрос (SELECT manager_id) возвращает идентификатор менеджера, однако следующая строка

(SELECT users.first_name from users where users.id = manager_id) as Manager

возвращает пустое значение.Я также попытался присоединиться к таблице, которая возвращает имя только одного менеджера:

(SELECT e.first_name FROM employees_employee e INNER JOIN employees_employee s ON s.id = e.coach_id limit 1)

1 Ответ

0 голосов
/ 10 октября 2018

Это потому, что ни один пользователь не является их собственным менеджером. Всегда уточняйте названия столбцов!

SELECT DISTINCT ON (u.id) u.id,
       CONCAT(u.first_name, ' ', u.last_name) AS employee
       u.email,
       u.manager_id,
       (SELECT u2.first_name FROM users u2 where u2.id = u.manager_id) as Manager,
       to_char(au.last_login, 'Mon dd, yyyy') as Last_Login
FROM users u INNER JOIN
     auth_user au
     ON u.user_id = au.id
ORDER BY u.user_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...