|
|
|
| Можно писать так:
select * from table group by name order by size desc;
|
где size - число
Но это не дает нужное :(
Как правильно сформировать запрос что-бы вывелось аналогичное?
select * from table order by size desc group by name ;
|
| |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 17:38)
| | GROUP BY не может применяться при выборе всех полей (*).
Ты сам подумай - ты группируешь по какому то полю, а остальные поля у которых поле группировки схожее имеют одно и то же значение? Не всегда! Поэтому к ним необходимо применить функции агрегатные, просуммировать, или выбрать макс мин или еще че нить. | |
|
|
|
|
|
|
|
для: XPraptor
(10.05.2006 в 17:46)
| | Просто надо сначала сгрупировать по какому-то значению а ужу ( да уже!) потом применить GROUP by к другому параметру .Неужели не понятно
Может можно обьеденить два запроса | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 18:01)
| | Тебе еще раз говорят - ты должен выбрать в select определенные поля, или функции определенных полей. А MySQL поддерживает двойную группировку GROUP BY (fild1, fild2) | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 18:01)
| | GROUP by здесь ни при чем. То что Вы хотите, называется сортировкой по нескольким полям.
Либо
select * from table order by size desc, name asc;
|
либо
select * from table order by name asc, size desc;
|
в зависимосто от того, что именно Вам нужно. | |
|
|
|
|
|
|
|
для: Trianon
(10.05.2006 в 18:05)
| | >либо
>
select * from table order by name asc, size desc;
>
|
Почти это но значения name должны быть уникальны как при group by | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 18:28)
| | Если в базе name уникальны - результат таким и будет.
Если name повторяются - Вам нужно определиться, какие именно строки Вы хотите получить. С помощью агрегатных функций (min, max, sum, avg, group_concat и т.п.) в разделе select. И тогда уже можно писать group by. | |
|
|
|
|
|
|
|
для: Trianon
(10.05.2006 в 18:34)
| | Обьесняю план:
Есть таблицы в ней есть фотки у каждой фотки есть ее тема(name) и есть size(количество скачек этой фотки)
Нужно сначала отсортировать фотки по size desc а потом так как поле name повторяеться отсортировать по name(что-бы name стал уникальным)
В двух словах:
Надо вывести по одной самой скачиваемой фотки из одной темы | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 18:41)
| | Для этого необходимо пречислить поля после конструкции ORDER BY через запятую
select * from table group by name order by size desc, name
|
| |
|
|
|
|
|
|
|
для: cheops
(10.05.2006 в 19:32)
| | НЕ то!
Это сначала сортирует по GROUP (берет самые первые попавшиеся значения) а потом только по size .
Надо с точностью да наоборот | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 21:11)
| | Можно исключить GROUP BY, а затем выловить нужный результат в результирующей таблице при помощи PHP
select * from table name order by size desc, name
|
| |
|
|
|
|
|
|
|
для: cheops
(10.05.2006 в 21:39)
| | Это работает при мелких таблицах.
А если в таблице 10000 то это вызовет не малую нагрузку
А хостинг ограничивает память на 16MB | |
|
|
|
|
|
|
|
для: kest131
(11.05.2006 в 17:50)
| | Память отводимая под PHP-скрипт не влият на память отводимую MySQL сервером под буферы и кэши запросов. | |
|
|
|
|
|
|
|
для: Trianon
(10.05.2006 в 18:34)
| | Не знаете?
И я не наю | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 18:49)
| | Вы меня что - на "слабо" взять решили? :))
SELECT distinct id_photo, id_theme FROM
(select max (downl_count) as mcnt, id_theme as mid from tab group by id_theme) as t1
JOIN
(select downl_count, id_photo, id_theme from tab ) as t2
ON mid = id_theme AND mcnt = downl_count
|
| |
|
|
|
|
|
|
|
для: Trianon
(10.05.2006 в 19:46)
| | Что за баракуда?!
Вы забываете что данных всего два а не 4 как у вас(name,size).
Придеться вернуться к старому варианту :
Просто сделать еще один запрос в цикле : )
Спасибо за проявленный труд. | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 21:20)
| | Твоя задача это: SELECT MAX(size) FROM TableName GROUP BY (name)
[поправлено модератором] | |
|
|
|
|
|
|
|
для: XPraptor
(11.05.2006 в 11:42)
| | Этого мало. Это выдаст значение критерия, но никак не ключ к записи, которая удовлетворяет этому критерию. Придется строить большой запрос. | |
|
|
|
|
|
|
|
для: Trianon
(11.05.2006 в 12:10)
| | >Этого мало. Это выдаст значение критерия, но никак не ключ к
>записи, которая удовлетворяет этому критерию.
Ключ - это что(id?)
>Придется строить большой запрос.
Почему большой?
Все решение найдено.Темка закрыта.А с пивом завязывай! | |
|
|
|
|
|
|
|
для: XPraptor
(11.05.2006 в 11:42)
| | Первое правильное решение!
5 баллов | |
|
|
|
|
|
|
|
для: kest131
(10.05.2006 в 21:20)
| | Вот самая понятная из Ваших формулировок:
В двух словах:
Надо вывести по одной самой скачиваемой фотки из одной темы
|
Отсюда следует, что одной теме может соответствовать несколько фотографий, которые могут отличаться разным числом закачек.
Я могу допустить, что name обозначает тему. В конце концов почему у темы не может быть имени?
Я даже готов допустить, что size обозначает число закачек, хотя это уже форменное издевательство: size значит размер, но никак не счетчик.
Но даже в этом случае остается неясным как в пределах одной темы одна фотография в Ваших обозначениях отличается от другой?
В моих: id_theme обозначает тему, id_photo обозначает фотографию, downl_count обозначает счетчик закачек. Четвертой сущности я не вводил, а три - минимум. Двумя (для решения сформулированной в цитате проблемы) не обойтись.
А формулировать проблему можно было бы и почётче... | |
|
|
|
|
|
|
|
для: Trianon
(11.05.2006 в 12:31)
| | >Отсюда следует, что одной теме может соответствовать
>несколько фотографий, которые могут отличаться разным числом
>закачек.
>
>Я могу допустить, что name обозначает тему. В конце концов
>почему у темы не может быть имени?
Все верно.
>Я даже готов допустить, что size обозначает число закачек,
>хотя это уже форменное издевательство: size значит размер,
>но никак не счетчик.
Я знаю что означает size просто для для примера это первое что пришло в голову.
>Но даже в этом случае остается неясным как в пределах одной
>темы одна фотография в Ваших обозначениях отличается от
>другой?
По id - это и так ясно
>
>В моих: id_theme обозначает тему, id_photo обозначает
>фотографию, downl_count обозначает счетчик закачек.
>Четвертой сущности я не вводил, а три - минимум. Двумя (для
>решения сформулированной в цитате проблемы) не обойтись.
Для всей задочи - мне вообще надо значений 8 но их же просто подставить для задачи которую я просил достаточно и двух значений (сортировка то идет по двум полям)
>А формулировать проблему можно было бы и почётче...
Возможно | |
|
|
|