2010-10-03 6 views
1

У меня есть следующие таблицы:Вложенный SQL Query

клуб: Club_ID | Название | Created_Date | ...

Club_Intesect: 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

+1

Таблицы столбцов таблицы не очень хорошо соответствуют столбцам результатов запроса. Определено ни «Club.Date», ни «Club_Intersect.Owner_ID». –

+0

Извините, вы оба правы, я был невнимателен. Теперь он должен иметь больше смысла. – pws5068

ответ

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. –

+0

... Я думаю, что желаемым результатом является максимальный доступ (5). – colithium

+0

На самом деле это 5, извините за оригинальную опечатку. – pws5068

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

Я думаю, что это поможет вам выбрать нужный вам клуб, используя вложенный SQL-запрос. Вы не указали, что хотите в возвращаемых результатах, потому что этот запрос будет извлекать только столбцы Клуба.

 Смежные вопросы

  • Нет связанных вопросов^_^