С Новым годом! Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/286: Рейтинг темы: голосов - 286, средняя оценка - 4.80
4 / 4 / 1
Регистрация: 07.01.2014
Сообщений: 73
1

Как использовать вместе ORDER BY и GROUP BY?

13.07.2014, 18:28. Показов 56288. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть таблица
SQL
1
2
3
4
5
6
7
id  
DATE    
than_helped_ua  
id_helped   
id  DATE                 than_helped_ua     id_helped   
1 1405098028                                     1
2 1405256196                                     1
Я делаю
SQL
1
SELECT * FROM than_helped WHERE id_helped = '1' GROUP BY id_helped ORDER BY DATE DESC
Но GROUP BY выполняется а ORDER BY нет)
Как это можно исправить
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.07.2014, 18:28
Ответы с готовыми решениями:

order by и group by
Привет, есть таблица. id_user-------id_message ---1--------------1 ---1--------------2...

Order By или Group By
Всем добрый вечер, чего то меня совсем глючит - чем отличается сортировка по полю от группировки по...

Выбрать в порядке order by group by
Всем привет проблемка у меня не получается сделать запрос с такой вот таблицы. CREATE TABLE...

Индексы в запросе с ORDER BY, GROUP BY и COUNT(field)
Здравствуйте! Не получается с помощью индексов быстро выполнять запрос. Что я делаю не так? ...

19
63 / 63 / 28
Регистрация: 18.03.2014
Сообщений: 794
13.07.2014, 22:30 2
Поменять их местами
SQL
1
SELECT * FROM than_helped WHERE id_helped = '1' ORDER BY DATE DESC GROUP BY id_helped
0
4 / 4 / 1
Регистрация: 07.01.2014
Сообщений: 73
14.07.2014, 14:33  [ТС] 3
Уже менял) Запрос не проходит) Выводит ошибку)
0
42 / 42 / 16
Регистрация: 09.06.2014
Сообщений: 133
14.07.2014, 14:52 4
kressnik, какую ошибку?
0
4 / 4 / 1
Регистрация: 07.01.2014
Сообщений: 73
17.07.2014, 10:58  [ТС] 5
просто что запрос неможет пройти)Отрабатует or die
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
17.07.2014, 11:45 6
Цитата Сообщение от kressnik Посмотреть сообщение
SQL
1
SELECT * FROM than_helped WHERE id_helped = '1' GROUP BY id_helped
я бы СУБД, которые позволяют подобное, душил бы в зародыше!!
Нормальная СУБД не позволит выбрать поля, НЕ УКАЗАННЫЕ в GROUP BY
и, разумеется, и в ORDER BY Date по полю, которого нет в агрегатной выборке, смысла нет.

ну и ещё.
Объясните, зачем делать GROUP BY по полю id_helped, если у Вас в выборке стоит условие WHERE id_helped = '1'
разумеется, других id_helped в выборке не будет.

М.б. Вы хотели так написать?
SQL
1
SELECT * FROM than_helped WHERE id_helped = '1' ORDER BY DATE DESC
0
21 / 21 / 2
Регистрация: 17.02.2011
Сообщений: 303
Записей в блоге: 1
17.07.2014, 11:52 7
Почитай что делает групировка, а что делает сортировка, использовать из вместе, бесмысленно, какой вывод ты хочешь получить?
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
17.07.2014, 13:45 8
Цитата Сообщение от kressnik Посмотреть сообщение
Я делаю
MySQL
1
SELECT * FROM than_helped WHERE id_helped = '1' GROUP BY id_helped ORDER BY DATE DESC
Этот запрос возвращает не более одной записи - зачем тут сортировка?
Может быть, нужно так?
MySQL
1
SELECT * FROM than_helped WHERE id_helped = '1' GROUP BY DATE DESC
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
17.07.2014, 14:07 9
Цитата Сообщение от cygapb-007 Посмотреть сообщение
GROUP BY DATE DESC
Не ошибаетесь?! Разве в GROUP BY допустимы модификаторы DESC и ASC ?!
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
17.07.2014, 14:13 10
Sergio Leone, учите синтаксис MySQL

Добавлено через 4 минуты
впрочем, в зависимости от потребности, можно и просто ORDER BY DATE DESC - зависит от требований к результату
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
17.07.2014, 14:26 11
Цитата Сообщение от Sergio Leone Посмотреть сообщение
Не ошибаетесь?! Разве в GROUP BY допустимы модификаторы DESC и ASC ?!
да, это я ошибся.
MySQL впереди планеты всей:

MySQL GROUP BY vs. ANSI SQL GROUP BY
MySQL follows ANSI SQL. However, MySQL gives you more flexibility when using the GROUP BY clause:

In ANSI SQL, you must list all columns that you use in the SELECT clause in the GROUP BY clause. MySQL does not have this restriction. MySQL allows you to have additional columns in the SELECT clause that are not specified in the GROUP BY clause.

MySQL also allows you to sort the group order in which the results are returned. The default order is ascending.
p.s. кстати, вот именно за первое расширение, которое позволяет выбирать в SELECT колонки, которых нет в перечне GROUP BY, я бы разработчиков и придушил!

Добавлено через 1 минуту

Не по теме:


Цитата Сообщение от cygapb-007 Посмотреть сообщение
впрочем, в зависимости от потребности, можно и просто ORDER BY DATE DESC - зависит от требований к результату
в пост #6 я это уже предположил....
вот только автор темы пассивен...

0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
17.07.2014, 14:43 12
Цитата Сообщение от Sergio Leone Посмотреть сообщение
p.s. кстати, вот именно за первое расширение, которое позволяет выбирать в SELECT колонки, которых нет в перечне GROUP BY, я бы разработчиков и придушил!
включите себе флажок, запрещающий это - и не нервничайте Какой не помню навскидку, но флажок есть.

Не по теме:

-- Не люблю я кошек!
-- Да вы их готовить не умеете!

0
Sergio Leone
17.07.2014, 14:57
  #13

Не по теме:

Цитата Сообщение от cygapb-007 Посмотреть сообщение
включите себе флажок, запрещающий это - и не нервничайте
Так я же не за себя, мне за державу обидно! ;)

0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
17.07.2014, 15:26 14
Цитата Сообщение от Sergio Leone Посмотреть сообщение
Так я же не за себя, мне за державу обидно!
На самом деле фишка полезная, если понимать, как она работает
Меня, например, иногда достаёт копировать почти весь селект в группировку...
0
4 / 4 / 1
Регистрация: 07.01.2014
Сообщений: 73
18.07.2014, 18:33  [ТС] 15
При этом запросе GROUP BY id_helped срабатывает но не дает мне последнюю дату)
MySQL
1
SELECT * FROM than_helped WHERE id_helped = '1' GROUP BY id_helped ORDER BY DATE DESC
Мне нужно сделать чтобы выводилась одна запись и бала там самая последняя дата)

Добавлено через 39 минут
Проблему решыл)
Всем спасибо)
Вот что помогло!!!!
SQL
1
SELECT * FROM (SELECT * FROM than_helped WHERE id_helped = '1' ORDER BY DATE DESC) t GROUP BY id_helped
Дата у меня была Unixtime
2
21 / 21 / 2
Регистрация: 17.02.2011
Сообщений: 303
Записей в блоге: 1
21.07.2014, 11:08 16
я не могу понять, зачем групировать то, что всегда будет выдавать и так один ИД, ты выборку делаешь по 1 и потмо групируешь? а что ты групируешь? если нечего групировать, плюс еще надо последнию дату, так зачем тебе вообще групировка? с таким запросом? Ты понимаешь что внутрений твой запрос этот "(SELECT * FROM than_helped WHERE id_helped = '1' ORDER BY DATE DESC" будет так же работать и без родительского запроса?
0
1 / 1 / 1
Регистрация: 02.06.2012
Сообщений: 30
05.01.2016, 23:39 17
Цитата Сообщение от kressnik Посмотреть сообщение
Вот что помогло!!!!
SQLВыделить код
1
SELECT * FROM (SELECT * FROM than_helped WHERE id_helped = '1' ORDER BY DATE DESC) t GROUP BY id_helped
гениально, спасибо!
0
шапоклякистка 8-го дня
3680 / 2240 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
06.01.2016, 08:40 18
Цитата Сообщение от cygapb-007 Посмотреть сообщение
включите себе флажок, запрещающий это - и не нервничайте Какой не помню навскидку, но флажок есть.
А можно вопрос: когда опция не отключена, что именно MySQL возвращает в полях, не указаных в GroupBy?

Скажем, есть таблица с именами и фамилиями,

Иванов Иван
Иванов Петр
Иванов Олег
Иванов Сергей

Что будет выдано в результате
SQL
1
SELECT Фамилия, Имя FROM Таблица GROUP BY Фамилия
? Иванов + случайное из 4х имя, или все 4 строки?

Добавлено через 5 минут
Просто я тоже привыкла, что в запросе с группировкой каждое поле должно либо быть перечислено в Group By, либо вычисляться с помощью аггрегатной функции. Поведение запроса с полями, не участвующими в группировке, и не вычисляемыми - для меня загадка. Встреченные учебные пособия на сей счет скромно молчат.
1
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
06.01.2016, 13:07 19
вот и я о том же.
Цитата Сообщение от texnik-san Посмотреть сообщение
? Иванов + случайное из 4х имя
однозначно будет одна строка в результате.
Имя, скорее всего, будет не совсем случайное, зависеть от порядка записей в исходной таблице/порядке запроса, но это роли особой не играет.

Тут подход такой - либо программист задаёт нужные поля в select и их же в group by и получает то, что ему нужно, либо он оставляет это на откуп СУБД, тем самым говоря, дай мне любое из значений, мне не важно, какое из сгруппированных ты мне вернёшь.
1
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
11.01.2016, 10:58 20
Цитата Сообщение от texnik-san Посмотреть сообщение
Что будет выдано в результате
Кстати, этот момент в MySQL реализован просто криво. Например, Oracle в подобном случае выдаст ошибку без всякого результата и потребует все (нужное) перечислить в GROUP BY
1
11.01.2016, 10:58
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2016, 10:58
Помогаю со студенческими работами здесь

Сделать выборку с двух таблиц ORDER BY и GROUP BY
Здравствуйте! Помогите составить запрос в БД с двух таблиц, с одновременной сортировкой и...

GROUP BY ORDER BY
давствуйте...у меня есть табличка mesajjes, пользователи смогут отправлять другдругу...

Order, group и Sum
Здравствуйте, случайно возникла проблема:) Имеется база данных с колонками id, item_id, part, p1,...

Ламерский вопрос про group by и order by
Что то я туплю под вечер... впрочем не факт что завтра лучше будет :) Вопрос: SELECT .... FROM...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru