首先,對不起,如果這是一個足夠接近的副本。我發現this question,這幾乎是我想要的,但我無法圍繞如何改變它以滿足我的需求。加入3張表
我有這3個表:
cs_Accounts: +----+-----------------------------+-------------+ | id | email | username | +----+-----------------------------+-------------+ | 63 | [email protected] | jamwaffles2 | | 64 | [email protected] | jamwaffles3 | | 65 | dhenddfggdfgetal-pipdfg.com | dhendu9411 | | 60 | jwapldfgddfgfffles.co.uk | jamwaffles | +----+-----------------------------+-------------+ cs_Groups: +----+-----------+------------+-------------+ | id | low_limit | high_limit | name | +----+-----------+------------+-------------+ | 1 | 0 | 0 | admin | | 2 | 1 | 50 | developer | | 3 | 76 | 100 | reviewer | | 4 | 51 | 75 | beta tester | | 5 | 1 | 50 | contributor | +----+-----------+------------+-------------+ cs_Permissions: +----+---------+----------+ | id | user_id | group_id | +----+---------+----------+ | 4 | 60 | 4 | | 3 | 60 | 1 | | 5 | 60 | 2 | | 6 | 62 | 1 | | 7 | 62 | 3 | +----+---------+----------+
我一直在冥思苦想,3路馬上加入了幾個小時,我無法得到我想要的結果。我正在尋找這樣的行爲:對於cs_Accounts
中的每個用戶,將返回一行,其中cs_Permissions
中有一行包含其ID和cs_Groups
的組的ID,以及group_id
的組具有high_lmiit
,並且在我可以指定的範圍內的low_limit
。
使用上面的表中的數據,我們可能最終是這樣的:
email username cs_Groups.name ---------------------------------------------------------- jwapldfgddfgfffles.co.uk jamwaffles admin jwapldfgddfgfffles.co.uk jamwaffles developer jwapldfgddfgfffles.co.uk jamwaffles beta tester dhenddfggdfgetal-pipdfg.com dhendu9411 admin dhenddfggdfgetal-pipdfg.com dhendu9411 reviewer
有一個額外的條件,但是。這種情況是隻有在用戶所屬的組具有high_limit
和low_limit
時才選擇行,其中的值可以使用WHERE
子句指定。正如你所看到的,上面的表只包含在權限表中有行的用戶。
這實際上是一個項目,我工作的一部分
WHERE
條款添加到該查詢。我明白爲什麼這可能是功課,但它不是 - 只是一個非常混亂的問題! – Bojangles 2011-05-14 12:46:02謝謝你好先生 - 這是一種享受:-)我沒有意識到它會像這樣簡單! – Bojangles 2011-05-14 12:56:37
真棒的答案,適應這種結構,以適應我的查詢,它直接工作,直觀地說至少!聲譽++ :) – cwiggo 2013-11-06 10:52:52