У меня есть 3 таблицы MySQL, описывающие игру:
- gamelist {gameId, ... with Primary (gameId)} = Хранит информацию о каждом сеансе игры.
- userlist {userId, ... with Primary (userId)} = Хранит информацию о каждом пользователе.
- game2user {gameId, userId ... with Primary (gameId, userId)} = Хранит, какие пользователи участвуют в каждом игровом сеансе (один игровой сеанс двум или более пользователям).
Теперь для определенного идентификатора пользователя мне нужно получить список игр, в котором указаны имена всех пользователей, участвующих в этом игровом сеансе.
Лучшее, что я когда-либо делал, это:
SELECT gl.gameid, gl.type, [...], ul.userid, ul.username
FROM userlist as ul, gamelist as gl, game2users as g2u
WHERE g2u.userid = a_certain_numeric_id AND
ul.userid = g2u.userid AND
gl.gameid = g2u.gameid`
При этом извлекаются уникальные строки из списка игр, но при этом выбираются только имя пользователя данного пользователя, а не его товарищи.
Вопрос в том, как я могу сделать это эффективно с точки зрения производительности (времени) и предпочтительно без выполнения отдельных запросов? Благодаря.