|
|
|
новичок
      
участник
Last Login: 03.02.2002 15:57
Сообщ.: 3,
Visits: 34
|
|
| Имеется таблица, значения некоторых поля записей которой иногда повторяются (назовём это поле “тип”). Необходимо создать запрос, выбирающий из этой таблицы по 1 последней записи каждого типа. Но не ту, которую ввели последней (что сделать элементарно, используя групповые операции), а ту, для которой некое поле имеет наибольшее значение. Можно ли это сделать, принимая во внимание тот факт, что access игнорирует сортировку, выполняя групповые операции в запросах.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 07.03.2005 18:49
Сообщ.: 365,
Visits: 4 016
|
|
| Замечательно сортировка работает в группировках...
|
|
|
|
|
Supreme Being
      
участник
Last Login: 16.07.2004 16:14
Сообщ.: 87,
Visits: 958
|
|
а так разве не получается: SELECT Тип.Тип, Max(Table1.Некое_Поле) FROM Тип INNER JOIN Table1 ON Тип.Тип_ID = Table1.Тип_ID GROUP BY Тип
|
|
|
|
|
новичок
      
участник
Last Login: 03.02.2002 15:57
Сообщ.: 3,
Visits: 34
|
|
To: msd Не совсем. Да, сортировка будет работать и прекрасно сортировать записи со, скажем так, уже выполненными групповыми операциями. Например, в моём примере можно отсортировать результат по этому самому Некое_поле. Но на выполнение самих групповых операций сортировка не влияет никак. Т.е. какие бы условия сортировки мы не задавали, набор записей в результате выполнения отсчёта будет один и тот же (с точностью до порядка). Проблема возникает с использованием операций Last и First, которые должны возвращать последнее и первое значение в каждой из групп. А последним значение оказывается не тогда, когда мы скармливаем нашему запросу запрос, в котором это значение последнее, а тогда, когда оно последнее в исходной таблице, т.е. введено последним. И это не специфика работы именно моей базы на моём компьютере – так сказано в справке по Access.
|
|
|
|
|
новичок
      
участник
Last Login: 03.02.2002 15:57
Сообщ.: 3,
Visits: 34
|
|
To: Yloo Когда я это увидел, то решил что мне ещё учиться и учиться. Большое спасибо. Но не всё так просто – выполнив запрос, мы получим максимальное значение Некоего_поля для каждого типа. Но мне нужна вся запись. Конечно, можно создать ещё несколько запросов, и по значению Некого_поля и типа (если предположить, что для каждой записи их сочетание уникально) выбрать из таблицы необходимые записи. Может я не прав, но мне такой способ кажется не очень красивым. Задача осложняется ещё и тем, что на самом деле Тип – это не одно поле, а 2. Т.е. из записей с максимальным Тип1 надо выбрать записи с максимальным Тип2. Конечно, можно создать из них одно поле, используя & и т.д., но это всё тоже как-то криво. Я уверен, что есть более рациональный способ сделать всё это, хотя, конечно, что есть – уже решение.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 16.07.2004 16:14
Сообщ.: 87,
Visits: 958
|
|
| Ну вообще-то таким селектом можно получить не только максимальное значение, но и все поля записи, и максимум выбирать не только по Тип1, но и по Тип2... или я все-таки чего-то не улавливаю... тогда звиняйте...
|
|
|
|