Frankenstine
@Frankenstine
Сисадмин

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

Дано:
Таблица table1 со столбцами: ID, time, userID1, userID2
Таблица table2 со столбцами ID, username, ...
При запросе вида
SELECT time, userID1, userID2 FROM table1;
получаем ответ вида
1467822104 268 833
1467822659 9 18

Я выяснил как превратить в человеческий вид первое значение -
select FROM_UNIXTIME(time) AS formatted_date ...
и вывод теперь имеет вид
2016-07-06 19:21:44 268 833
2016-07-06 19:30:59 9 18

Но никак не соображу, как вот эти циферки превратить в имена, т.е. вместо значения userID1/userID2 вывести соответствующие им username?
  • Вопрос задан
  • 16331 просмотр
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
SELECT
   FROM_UNIXTIME(time) AS formatted_date, 
   user1.username AS user1_username, 
   user2.username AS user2_username
FROM table1
LEFT JOIN table2 as user1 on user1.ID = table1.userID1
LEFT JOIN table2 as user2 on user2.UD = table1.userID2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@WayMax
SELECT t2.username AS name1, t3.username AS name2
FROM table1, table2 t2, table2 t3
WHERE table1.userID1 = t2.id AND table1.userID2 = t3.id;

Правда это для MS SQL Server, MySQL под рукой сейчас нет.

UPD: Оказался вторым :) Вариант без "LEFT JOIN" работает так же, но компактнее и более читаемый :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы