我正在設計一個網站來教我自己如何在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