我正在设计一个网站来教我自己如何在mysql中使用表连接,并在早期卡住了。 (这些数字是Wii的朋友代码,如果这能帮助你理解这一点!)简单的Mysql表连接问题
我有3个表:
用户:
id, firstname, surname
游戏:
id, title
号:
number, users_id, game_id
T他的号码是属于用户且与游戏关联的唯一代码。
我想弄出一个特定游戏的数字列表以及它们所属的用户的名字。
我运行查询:
SELECT firstname, surname, number FROM games, users, numbers WHERE numbers.game_id = games.id AND games.title = 'foogame'
例如,获得了所有属于foogame的数字。但是,这会返回没有此游戏代码的任何用户使用来自其他用户的随机代码。我如何使这个查询只返回实际上有该游戏代码的用户?
你在做什么在你的例子是笛卡尔乘积(所有行交叉针对来自其他表的行的所有其他组合)。您希望在id列上使用连接来减少数据集,然后再击中“where”子句。 – 2009-02-18 21:35:13
@Andrew:大多数RDBMS品牌知道如何相同地优化这两种情况。如果你不*在where子句中添加条件,它只是一个笛卡尔积。 – 2009-02-18 21:40:34