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

У меня есть таблица с именем 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