Предположим, что я ищу, чтобы выбрать 3 столбца из нескольких объединенных таблиц: event_id, home_team и результаты агрегатной функции. Событие_id - это первичный ключ, автоинкремент. Home_team не уникален для каждой записи в таблице. Я хочу группировать event_id для генерации агрегатной функции, а затем сортировать по результатам агрегатной функции, принимающей наивысшие 3 значения. Но я также хочу, чтобы home_team был уникальным. Как я могу это сделать? Я не могу сделать DISTINCT, потому что у записи будут параметры home_team, event_id и результаты агрегатной функции. Event_id всегда будет уникальным, поэтому мой запрос DiSTINCT ничего не делает.GROUP BY и уникальность в нескольких столбцах
Мне нужно группировать event_id, поскольку функция агрегата зависит от этого, поэтому я не могу группировать home_team. Если группа I обоими это тоже не поможет, потому что ...
Пример
Table 1
id: 1
event_id: 1
value: 2
id 2
event_id: 1
value: 6
id 3
event_id: 2
value: 4
id4
event_id: 2
value: 3
id5
event_id: 3
value: 1
Таблица 2
event_id (PK, autoincremented): 1
home_team: 1
event_id: 2
home_team 2
event_id: 3
home_team: 1
SELECT *, AVG(table1.value) as average FROM table1 JOIN table2 ON table1.event_id = table2.event_id GROUP BY table2.event_id ORDER BY average DESC
Мне нужно сгруппировать по table2.event_id для того, чтобы генерировать правильный результат совокупной функции. Тем не менее, я также хочу HOME_TEAM быть различны, так что желаемый результат будет два результата с event_id 1 и event_id 2
Я вас не понимаю. В домене одного event_id может быть несколько home_teams? Если да - как вы выбираете, что выбрать? –
Я думаю, нам нужно немного больше деталей. Можете ли вы предоставить SQL или упрощенные версии вашего SQL, чтобы проиллюстрировать, что вы пытаетесь описать? –
Спасибо, ребята, я поднял пример. Надеюсь, это сделает вещи более ясными ... Спасибо за помощь – 2009-08-28 18:09:51