表結構(?):MySQL的棘手雙/三JOIN
users: uid, name
friendships: uid1, uid2
game_membership: gid, uid
基本上我試圖讓一個查詢作爲gid
函數,返回:
uid1, name1, uid2, name2
,其中僅uid
表示在game_membership
表中給出的gid
被返回。這是我到目前爲止:
SELECT
f.uid1 AS id1,
u1.name AS name1,
f.uid2 AS id2,
u2.name AS name2
FROM
friendships AS f
WHERE
u1.uid in (SELECT uid FROM game_membership WHERE gid = <GID>)
AND u2.uid in (SELECT uid FROM game_membership WHERE gid = <GID>)
JOIN users AS u1 ON f.uid1 = u1.uid
JOIN users AS u2 ON f.uid2 = u2.uid
我剛剛得到一個MySQL語法錯誤。任何人都可以將我指向正確的方向嗎?我覺得我可能需要在game_membership
表中的uid
的uid
表中每個uid
一個做另一個JOIN或兩個JOIN。
我相信你應該在你的Where子句之前加入 – Fido 2012-04-15 21:34:14
不要使用'where..in(select)'構造 - 總是學會把它寫成連接!您將實現[更好的性能](http://stackoverflow.com/a/9982157/684229)。看到我的答案。 – TMS 2012-04-15 21:47:02