Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск максимума по нескольким полям / 11 сообщений из 11, страница 1 из 1
12.10.2020, 09:56
    #40007595
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
Задача: Есть 2 таблицы Т1-главная, Т2-подчинённая, отношение один ко многим.
В подчинённой таблице (для каждой записи главной таблицы) надо отсортировать сначала по дате Д2, потом по тексту Т2, результат
это верхняя запись. Сортировка по убыванию.
Хотел сделать с помощью сортировки и оператора Тор 1, но не получается. почему то получается так как будто Тор 1 всегда берётся
от всего содержимого Т2 .
Решил задачу с помощью 2-х последовательных группировок и агрегатной функции Макс, пример прилагается.
Решение с помощью 3х запросов: Запрос1, Запрос2, Запрос3. Результат в Запрос3.
Но группировка это тяжёлая операция, хотелось бы сортировками и Тор 1.
Заранее благодарен.
...
Рейтинг: 0 / 0
12.10.2020, 11:19
    #40007630
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
Geizer1,
Код: vbnet
1.
2.
SELECT Т1.Код1, Т1.т1, Т1.д1, DMax("д2","т2","код12=" & [код1]) AS Выражение1
FROM Т1;
...
Рейтинг: 0 / 0
12.10.2020, 12:08
    #40007659
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
sdku
Geizer1,
Код: vbnet
1.
2.
SELECT Т1.Код1, Т1.т1, Т1.д1, DMax("д2","т2","код12=" & [код1]) AS Выражение1
FROM Т1;


Работает, но сомневаюсь что будет быстрее моего варианта.
Это всё мне надо сделать на SQL Server на самом деле, а там функции DMax нет.
Я хотел средствами SQL это сделать, вот вопрос реально ли это.
...
Рейтинг: 0 / 0
12.10.2020, 12:43
    #40007678
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
а что запросы на сервере?
...
Рейтинг: 0 / 0
12.10.2020, 12:51
    #40007682
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
Geizer1
Это всё мне надо сделать на SQL Server на самом деле
А там есть CTE и ROW_NUMBER().
...
Рейтинг: 0 / 0
12.10.2020, 13:59
    #40007717
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
Geizer1

Работает, но сомневаюсь что будет быстрее моего варианта....
Если Вас так сильно беспокоит скорость не надо выполнять запросы на сервере....
(скорости же функции DMAX более чем достаточно в этом запросе)
...
Рейтинг: 0 / 0
12.10.2020, 14:10
    #40007724
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
sdku
Если Вас так сильно беспокоит скорость не надо выполнять запросы на сервере....

ХМ.. Вы ничего не путаете?
...
Рейтинг: 0 / 0
12.10.2020, 16:32
    #40007780
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
ROI,
Да,путаю.Имел ввиду сокращение обращений к серверу по каждому "чиху"
(Чтоб сказать что-то конкретное надо знать логику работы БД)
...
Рейтинг: 0 / 0
13.10.2020, 03:44
    #40007921
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
Akina
Geizer1
Это всё мне надо сделать на SQL Server на самом деле
А там есть CTE и ROW_NUMBER().

Спс, надо подумать.
...
Рейтинг: 0 / 0
13.10.2020, 04:06
    #40007922
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
sdku
Geizer1

Работает, но сомневаюсь что будет быстрее моего варианта....
Если Вас так сильно беспокоит скорость не надо выполнять запросы на сервере....
(скорости же функции DMAX более чем достаточно в этом запросе)

Я планирую это добавить в уже существующую Вьюху.
...
Рейтинг: 0 / 0
13.10.2020, 06:48
    #40007929
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск максимума по нескольким полям
Сначала в подзапросе
ROW_NUMBER() OVER (PARTITION BY Код12 ORDER BY Д2 DESC, Т2 DESC) AS RowNum
а потом в основном запросе фильтр по RowNum=1, результат правильный.
На этом и остановлюсь, всем спс.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск максимума по нескольким полям / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]