【发布时间】:2011-11-05 16:22:52
【问题描述】:
我有 3 个描述游戏的 MySQL 表:
- gamelist {gameId, ... with Primary(gameId) } = 存储有关每个游戏会话的信息。
- userlist {userId, ... with Primary(userId) } = 存储每个用户的信息。
- game2user {gameId, userId ... with Primary(gameId, userId) } = 存储参与每个游戏会话的用户(两个或更多用户的一个游戏会话)。
现在,对于某个 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`
这会从游戏列表中检索唯一的行,但它只获取给定用户的用户名,而不是他的合作者。
问题是我怎样才能在性能(时间)方面有效地做到这一点,最好不做单独的查询?谢谢。
【问题讨论】:
-
你有表结构吗?