Как выбрать два дополнительных столбца из другой таблицы на основе значений в основной таблице?
У меня есть таблица с именем maintable
с тремя столбцами: id
, userid1
и userid2
.
Другая таблица с именем users
вводится ключом userid
и имеет name
в качестве столбца.
Я хочу выбрать что-то по строкам:
SELECT maintable.*, users.name AS username1, users.name AS username2
FROM maintable, users
WHERE ...
В принципе, я хочу получить все столбцы в строке maintable
и добавить в конце два столбца, которые будут отображать имена для userid1
и userid2
из таблицы users
.
Я не уверен, как форматировать предложение where для такого запроса.
Ответы
Ответ 1
Вам необходимо дважды присоединиться к пользователям:
SELECT m.*, u1.name, u2.name
FROM maintable m
INNER JOIN users u1 ON (m.userid1 = u1.userid)
INNER JOIN users u2 ON (m.userid2 = u2.userid)
Вы можете прочитать документацию о MySQL JOIN Syntax здесь.
Ответ 2
что-то вроде этого,
select m.*,
(select u1.name from users as u1 where m.userid1 = u1.userid) as username1,
(select u2.name from users as u2 where m.userid2 = u2.userid) as username2
from
maintable as m