Avenus
Under Glory Yield
MAX и GROUP BY
Здравствуйте!
Изучил документацию mysql по MAX и GROUP BY, а также обсуждения на форуме, которые выдал мне поиск по запросу "max group". В принципе, проблема почти такая же. Но во всех примерах идет выборка что-то вроде:
Такой пример мне понятен и выдает только те id у которых максимальный rate.
В моем случае немного по-другому. Прошу даже больше объяснить человеческим языком, а не языком mysql почему это именно так работает.
Ситуация:
Есть таблица TABLE и FOTO . Вот некоторые записи из таблицы TABLE:
id=1, event=1, rate=0, name=a ...
id=2, event=2, rate=10, name=b ...
id=3, event=2, rate=0, name=c ...
id=4, event=3, rate=0, name=d ...
...
Необходимо выбрать только те строки со всеми полями из этой таблицы TABLE, у которых MAX(rate) среди групп по event и присоединить с помощью LEFT JOIN строки из другой таблицы FOTO к выбранным из TABLE.
Делаю так:
Получаю:
id=1, event=1, rate=0, name=a ...
id=3, event=2, rate=0, name=c ... rate=10 ??? ведь rate=10 у строки с id=2
id=4, event=3, rate=0, name=d ... rate=0
Необходимо как видно из условия получить:
id=1, event=1, rate=0, name=a ...
id=2, event=2, rate=10, name=b ...
id=4, event=3, rate=0, name=d ...
Спасибо всем, кто объяснит или поможет сделать необходимый результат!
Здравствуйте!
Изучил документацию mysql по MAX и GROUP BY, а также обсуждения на форуме, которые выдал мне поиск по запросу "max group". В принципе, проблема почти такая же. Но во всех примерах идет выборка что-то вроде:
PHP:
select id,max(rate) from table group by id
В моем случае немного по-другому. Прошу даже больше объяснить человеческим языком, а не языком mysql почему это именно так работает.
Ситуация:
Есть таблица TABLE и FOTO . Вот некоторые записи из таблицы TABLE:
id=1, event=1, rate=0, name=a ...
id=2, event=2, rate=10, name=b ...
id=3, event=2, rate=0, name=c ...
id=4, event=3, rate=0, name=d ...
...
Необходимо выбрать только те строки со всеми полями из этой таблицы TABLE, у которых MAX(rate) среди групп по event и присоединить с помощью LEFT JOIN строки из другой таблицы FOTO к выбранным из TABLE.
Делаю так:
PHP:
select max(table.rate) as rate,table.*,foto.* from table left join foto on foto.id=table.id group by table.event order by rate desc
id=1, event=1, rate=0, name=a ...
id=3, event=2, rate=0, name=c ... rate=10 ??? ведь rate=10 у строки с id=2
id=4, event=3, rate=0, name=d ... rate=0
Необходимо как видно из условия получить:
id=1, event=1, rate=0, name=a ...
id=2, event=2, rate=10, name=b ...
id=4, event=3, rate=0, name=d ...
Спасибо всем, кто объяснит или поможет сделать необходимый результат!