![]() |
|
Модераторы: LSD |
![]()
|
|
| 4epT |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Добрый вечер всем! Имееется вот такой запрос:
Данный запрос выберает все отправленные отчеты по отправителю ([email protected]), один отчет может уйти на нескольких адресатов, тем самым я пытаюсь сделать Group by по id отчета, что бы каждый отправленные отчет стал уникальным. При выполнении этого запроса вываливается такая ошибка:
Что я не так делаю ? |
||||
|
|||||
| password |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 23.9.2008 Где: Украина, Сумы Репутация: 4 Всего: 8 |
1. что то непонятное накрутили после from
2. При группировке обязательно нужно указывать все поля 3.
ну и sql должен приобрести приблизительно такой вид:
Это сообщение отредактировал(а) password - 29.12.2011, 18:15 |
||||
|
|||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Дело в том что r.ROUTE это выбирает все отправленные ... [email protected] это тот кто отправил отчет.
Если будет такая ситуация:
если тут группировать по ID, какой будет результат ? |
|||
|
||||
| password |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 23.9.2008 Где: Украина, Сумы Репутация: 4 Всего: 8 |
только по одному полю ID группировать нельзя, если вы группируете, то группировку нужно проходит ПО ВСЕМ ВЫВОДИМЫМ полям, кроме расчетных (SUM,COUNT,MAX....) почитайте про "Аналитические функции "в ORACLE Это сообщение отредактировал(а) password - 29.12.2011, 18:32 |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Понятно, спасибо большое за объяснение ) я просто не правильно понимал как работает group by.
А не подскажите, group by так работает во всех СУБД ? или только в Oracle ? |
|||
|
||||
| password |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 23.9.2008 Где: Украина, Сумы Репутация: 4 Всего: 8 |
Исключения я встречал только MySQL и в DBASE при работе через FOXPRO - там можно группировать по нескольким полям. Это сообщение отредактировал(а) password - 29.12.2011, 18:57 |
|||
|
||||
| Zloxa |
|
||||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Здесь тоже можно группировать по нескольким полям. Наверное ты не правильно выразился. На счет FoxPro не знаю, но MySQL действительно допускает использовать в списке выводимых полей (select-list) не перечисленные в выражении group by поля без использования аггрегатов. Что, с моей точки зрения, слишком часто сбивает с толку новичков, мешает им понять суть происходящего и провоцирует их допускать ошибки.
Для того, чтобы правильно реализовать это условие, надо определиться по какому принципу дожны формироватся дополнительные аттрибуты выборки. Например в вашем случае:
какой дескрипшн из двух указанных, должен оказаться результирующей выборке, если значение ID станет там уникальным? На этом примере прекрасно видно благо, которое несет наличие ограничения, наложенного ораклом. Начинающий MySQLщик не стал бы париться этим вопросом и получил бы недетерменированный результат, который сегодня, на тестовой среде, казалось бы, стабильно возвращает descr1, а завтра, при переносе окружение заказчика, необъяснимо, станет возвращать descr2. Это сообщение отредактировал(а) Zloxa - 30.12.2011, 02:15 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
![]()
|
| Правила форума "Oracle" | |
|
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Oracle | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |