Я не совсем уверен, как сформулировать это как краткое название вопроса.
У меня есть таблица games
, которая содержит записи, представляющие игры одного игрока против другого. Соответствующие столбцы этой таблицы userid1
и userid2
. У меня есть еще одна таблица с именем accounts
, состоящая из столбцов id
и username
.
Я хотел бы получить имя пользователя оппонента из таблицы accounts
. Оппонентом является пользователь, идентификатор которого не равен известному идентификатору пользователя. Итак, если userid1 = 123
, то я бы хотел получить accounts.username
пользователя, где accounts.id
равно userid2
той же записи games
. То же самое происходит наоборот, если userid2 = 123
.
До сих пор я только мог выбирать имя пользователя оппонента отдельно, используя два запроса:
SELECT * FROM games, accounts
WHERE games.userid1 = 123 AND accounts.id = games.userid2
и
SELECT * FROM games, accounts
WHERE games.userid2 = 123 AND accounts.id = games.userid1
(swapped: ^ ^)
Однако я бы хотел объединить эти два запроса в один. Итак, возможно ли получить accounts.username
, где accounts.id
равно:
games.userid2
, если games.userid1
равно известному идентификатору пользователя
games.userid1
, если games.userid2
равно известному идентификатору пользователя
и если да, то как?