У меня есть следующая таблица, называемая утверждающим:
И таблица под названием user:
Я хотел бы сделать запрос, который выводит имена пользователей вместо идентификаторов таблицы утверждающих, например:
Я попытался со следующим запросом, но я получаю только одно имя за раз:
SELECT
U.full_name as subordinate
FROM user AS
U
INNER JOIN
approver as A
ON
(A.subordinate_id = U.id);
Введите здесь описание изображения
Как я могу получить имена пользователей из таблицы утверждающих так же, как я продемонстрировал в примере выше?
Я удалил тег PostgreSQL, так как я предполагаю, что этот вопрос касается MySQL. Пожалуйста, исправьте теги, если это предположение неверно.
Tks @TheImpaler извините за неправильные теги!
Спасибо @KenWhite! извините за неправильные теги!
Посмотрите, работает ли это. Вы присоединяетесь к пользовательской таблице только один раз, поэтому вы только один раз декодируете ее.
SELECT u1.full_name AS subordinate,
u2.full_name AS leader,
u3.full_name AS main_leader
FROM approver AS a
INNER JOIN user AS u1
ON a.subordinate_id = u1.id
INNER JOIN user AS u2
ON a.leader_id = u2.id
INNER JOIN user AS u3
ON a.main_leader_id = u3.id
Просто заметка. Когда одна и та же таблица объединяется несколько раз, очень важно каждый раз добавлять разные «псевдонимы». В этом случае решения используют u1, u2 и u3 для одной и той же таблицы user.
Большое спасибо все получилось! и что именно вы подразумеваете под: когда одна и та же таблица объединяется несколько раз, важно каждый раз добавлять другой «псевдоним»? спасибо!!!!
MySQL и PostgreSQL — две совершенно разные СУБД с разным синтаксисом и функциональностью. Маловероятно, что вы используете их оба одновременно. Пожалуйста, отредактируйте свой пост и удалите тег, который на самом деле не применяется. Если вы не уверены, какую РСУБД вы используете, не пытайтесь писать SQL, пока не разберетесь.