2010-10-03 304 views
1

我有以下表格:嵌套SQL查詢

俱樂部:Club_ID |標題| Created_Date | ...

Club_Intect:User_ID | Club_ID |訪問

我試圖選擇一個可變數量的俱樂部,並加入該俱樂部擁有最高訪問權限的用戶的ID。這個人被認爲是所有者。

所以,如果俱樂部100成員A,B,C與接入3,4和5分別是:我想最終的查詢,從俱樂部的選擇:

Club.Club_ID  Club.Title  Club.Created_Date Club_Intersect.User_ID 

     100   | "Test Club" | "Creation Date"  |  C    | 
     101   | "Test Club 2" | "Creation_Date"  | Highest Access User | 
     ... 
+2

這裏有很多混淆。你的結果使用'Club.Date'和'Club_Intersect.Owner_ID',它們都不存在於表中。您要求「最高」訪問權限,但請選擇樣本輸出中最低(3 <5)的用戶... – RedFilter 2010-10-03 15:25:23

+1

您的樣本表列與查詢結果列非常匹配。 'Club.Date'和'Club_Intersect.Owner_ID'都沒有定義。 – 2010-10-03 15:25:25

+0

對不起,你們都是對的,我很粗心。它現在應該更有意義。 – pws5068 2010-10-03 15:27:21

回答

1
SELECT * FROM Club c 
JOIN Club_Intesect ci ON ci.Club_ID = c.Club_ID 
WHERE ci.Access = (SELECT MAX(Access) FROM Club_Intesect WHERE Club_ID = c.Club_ID) 

未經測試,但你這個想法

+0

由於期望的結果是3而不是5,所以您可能需要MIN而不是MAX。 – 2010-10-03 15:28:13

+0

...我認爲期望的結果是最大訪問量(5)。 – colithium 2010-10-03 15:32:49

+0

其實它是5,對於原來的錯字抱歉。 – pws5068 2010-10-03 15:33:02

1
SELECT * FROM Club WHERE CLUB_ID = (SELECT Club_ID FROM Club_Intersect ORDER BY Access DESC LIMIT 1); 

我認爲這將使用嵌套的SQL查詢來選擇你想要的俱樂部。你沒有在你的返回結果中指定你想要的,因爲這個查詢只會檢索俱樂部列。