Групповые операции в Access
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Групповые операции в Access Expand / Collapse
Автор
Сообщение
30.01.2002 13:52
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 03.02.2002 15:57
Сообщ.: 3, Visits: 34
Имеется таблица, значения некоторых поля записей которой иногда повторяются (назовём это поле “тип”). Необходимо создать запрос, выбирающий из этой таблицы по 1 последней записи каждого типа. Но не ту, которую ввели последней (что сделать элементарно, используя групповые операции), а ту, для которой некое поле имеет наибольшее значение. Можно ли это сделать, принимая во внимание тот факт, что access игнорирует сортировку, выполняя групповые операции в запросах.
Сообщ. #740419
30.01.2002 14:52
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 07.03.2005 18:49
Сообщ.: 365, Visits: 4 016
Замечательно сортировка работает в группировках...
Сообщ. #740430
30.01.2002 16:36
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.07.2004 16:14
Сообщ.: 87, Visits: 958
а так разве не получается:
SELECT Тип.Тип, Max(Table1.Некое_Поле) FROM Тип INNER JOIN Table1 ON Тип.Тип_ID = Table1.Тип_ID
GROUP BY Тип
Сообщ. #740442
30.01.2002 19:31
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 03.02.2002 15:57
Сообщ.: 3, Visits: 34
To: msd
Не совсем. Да, сортировка будет работать и прекрасно сортировать записи со, скажем так, уже выполненными групповыми операциями. Например, в моём примере можно отсортировать результат по этому самому Некое_поле. Но на выполнение самих групповых операций сортировка не влияет никак. Т.е. какие бы условия сортировки мы не задавали, набор записей в результате выполнения отсчёта будет один и тот же (с точностью до порядка). Проблема возникает с использованием операций Last и First, которые должны возвращать последнее и первое значение в каждой из групп. А последним значение оказывается не тогда, когда мы скармливаем нашему запросу запрос, в котором это значение последнее, а тогда, когда оно последнее в исходной таблице, т.е. введено последним. И это не специфика работы именно моей базы на моём компьютере – так сказано в справке по Access.
Сообщ. #740457
30.01.2002 19:32
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 03.02.2002 15:57
Сообщ.: 3, Visits: 34
To: Yloo
Когда я это увидел, то решил что мне ещё учиться и учиться. Большое спасибо. Но не всё так просто – выполнив запрос, мы получим максимальное значение Некоего_поля для каждого типа. Но мне нужна вся запись. Конечно, можно создать ещё несколько запросов, и по значению Некого_поля и типа (если предположить, что для каждой записи их сочетание уникально) выбрать из таблицы необходимые записи. Может я не прав, но мне такой способ кажется не очень красивым. Задача осложняется ещё и тем, что на самом деле Тип – это не одно поле, а 2. Т.е. из записей с максимальным Тип1 надо выбрать записи с максимальным Тип2. Конечно, можно создать из них одно поле, используя & и т.д., но это всё тоже как-то криво. Я уверен, что есть более рациональный способ сделать всё это, хотя, конечно, что есть – уже решение.
Сообщ. #740458
31.01.2002 10:45
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.07.2004 16:14
Сообщ.: 87, Visits: 958
Ну вообще-то таким селектом можно получить не только максимальное значение, но и все поля записи, и максимум выбирать не только по Тип1, но и по Тип2... или я все-таки чего-то не улавливаю... тогда звиняйте...
Сообщ. #740486
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 3:25