|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
Как получить все записи с максимальным значением одного из полей?05.07.2009, 11:11. Показов 3152. Ответов 25
Метки нет (Все метки)
Имеется , условно говоря, база документов со всеми их атрибутами. В базе могут находиться одинаковые документы, различающиеся только номером версии. Как составить запрос, чтобы выдавались все документы с максимальным значением номера версии ? База на Акссесс 97.
0
|
|
| 05.07.2009, 11:11 | |
|
Ответы с готовыми решениями:
25
Получить новую последовательность, выбросив из исходной все члены с максимальным значением
|
|
0 / 0 / 0
Регистрация: 25.03.2009
Сообщений: 70
|
|
| 05.07.2009, 14:09 | |
|
'SELECT MAX (Номер_документа) FROM Имя_бд WHERE имя_документа=имя_документа_которое_нужн о'
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 05.07.2009, 14:21 [ТС] | |
|
Tory
В том то и дело, что имя_документа_которое_нужно это все документы в базе. Нужно отсеять документы у которых имеются более поздние версии.
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 05.07.2009, 15:18 [ТС] | |
|
Вот пример:
Есть: Doc1 Ver1 Doc1 Ver2 Doc2 Ver1 Doc3 Ver1 Doc3 Ver2 Doc3 Ver3 Результатом запроса должно стать: Doc1 Ver2 Doc2 Ver1 Doc3 Ver3
0
|
|
|
Axel
|
|
| 05.07.2009, 23:44 | |
|
http://relib.com/forums/topic.asp?id=777500
|
|
|
Axel
|
|
| 05.07.2009, 23:53 | |
|
http://relib.com/forums/topic.asp?id=777166
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 07.09.2009, 15:15 [ТС] | |
|
А что за оператор такой 'in' ? Чего-то описания я нигде не нашел. А запрос с ним то работает то нет.
Собственно запрос у меня вот какой: sql_select = 'select * from knowbase where 1 = 1 ' & DocID1 & DocID2 & Date1 & Date2 & Otdel & FIO & DocumentAlias & PartInsur & Tema & Ext & Forma1 & Actual & Approved & ' and FamCount in ' & '(' & 'Select Max(FamCount) from knowbase GROUP BY DocumentAlias , PartInsur, Forma1, Tema' & ') order by ID' И нужно чтобы выбирался только максимальный этот FamCount из документов с одинаковым DocumentAlias, PartInsur, Forma1, Tema
0
|
|
|
Axel
|
|
| 07.09.2009, 22:46 | |
|
where ID in (1,2,3,4)
выбирает все записи, у которых поле ID в значение 1,2,3,4... и т.д. ты напиши что у тебя в итоге получается.. в запросе.. без всяких там переменных |
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 08.09.2009, 13:04 [ТС] | |
|
Ну результирующий запрос зависит от значений переменных.
Но может выглядеть например вот так: select * from knowbase where 1 = 1 and PartInsur = 'Банковское' and Forma1 = 'Аддендум' and FamCount in (Select Max(FamCount) from knowbase GROUP BY DocumentAlias , PartInsur, Forma1, Tema) order by ID
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 17.12.2009, 15:43 [ТС] | |
|
Ээх, неужели нельзя такой запрос составить?
Задача на мне с той поры так и весит, и периодически о ней вспоминают.
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 17.12.2009, 15:44 [ТС] | |
|
опечатался, задача 'висит' конечно.
0
|
|
|
0 / 0 / 0
Регистрация: 23.10.2008
Сообщений: 27
|
|
| 18.12.2009, 19:32 | |
|
SELECT Doc, Max(Ver) FROM YourTable GROUP BY Doc
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 20.12.2009, 10:54 [ТС] | |
|
Пробую в данную схему засунуть свой конкретный запрос:
SELECT (Select * from knowbase where 1=1 and PartInsur = 'Банковское' and Forma1 = 'Аддендум'), Max(FamCount) FROM knowbase GROUP BY (Select * from knowbase where 1=1and PartInsur = 'Банковское' and Forma1 = 'Аддендум' ); Пишет Syntax error
0
|
|
|
0 / 0 / 0
Регистрация: 23.10.2008
Сообщений: 27
|
|
| 20.12.2009, 12:07 | |
|
Правильно пишет. Попробуйте так.
SELECT Doc, Max(Ver) FROM YourTable WHERE PartInsur = 'Банковское' and Forma1 = 'Аддендум' GROUP BY Doc
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 20.12.2009, 12:11 [ТС] | |
|
'Doc' у меня формируется динамически, и 'WHERE PartInsur = 'Банковское' and Forma1 = 'Аддендум'' это один из возможных вариантов 'Doc'
0
|
|
|
0 / 0 / 0
Регистрация: 23.10.2008
Сообщений: 27
|
|
| 20.12.2009, 12:38 | |
|
SELECT Doc, Max(Ver) FROM YourTable
WHERE Doc IN (SELECT Doc FROM YourTable WHERE PartInsur 'Банковское' and Forma1 = 'Аддендум') GROUP BY Doc
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 20.12.2009, 12:41 [ТС] | |
|
Doc - это такой оператор языка SQl ?
0
|
|
|
0 / 0 / 0
Регистрация: 23.10.2008
Сообщений: 27
|
|
| 20.12.2009, 12:57 | |
|
Это имя поля из Вашего примера, в котором содержится номер документа. Значения поля - Doc1, Doc2 и т.д.
0
|
|
|
0 / 0 / 0
Регистрация: 10.02.2009
Сообщений: 23
|
|
| 20.12.2009, 13:05 [ТС] | |
|
Ну это я пример такой упрощенный привел.
На самом деле то что в примере Doc, у меня выглядит как: where 1 = 1 ' & DocID1 & DocID2 & Date1 & Date2 & Otdel & FIO & DocumentAlias & PartInsur & Tema & Ext & Forma1 & Actual & Approved и в зависимости от пользовательского запроса с подставнокой переменных может выглядеть как: where 1 = 1 and PartInsur = 'Банковское' and Forma1 = 'Аддендум' или еще как-то. И нужно чтоб из всех этих документов выбирались только с максимальным номером версии.
0
|
|
|
0 / 0 / 0
Регистрация: 23.10.2008
Сообщений: 27
|
|
| 20.12.2009, 13:57 | |
|
Вам необходимо создать поле в таблице, однозначно определяющее документ, например, Doc. При этом первичным ключем таблицы может быть комбинация полей Doc и Version. Тогда не придется писать запросы такого рода
SELECT First(Txt) AS Txt1, First(Num) AS Num1, First(Dt) AS Dt1, Max(Ver) AS MaxVer FROM YourTable WHERE (((Txt+CStr(Num)+CStr(Dt)) In (SELECT Txt+CStr(Num)+CStr(Dt) FROM YourTable WHERE Txt = 'Doc3' AND Num=3 AND Dt=#10/13/2003 10:49:03#))) GROUP BY (Txt+CStr(Num)+CStr(Dt)); где Txt, Num, Dt - атрибуты искомого документа, имющие тип текст, число и дата/время соответственно.
0
|
|
| 20.12.2009, 13:57 | |
|
Помогаю со студенческими работами здесь
20
Есть таблица. Как напечатать N копий записи из неё?. N - значение одного из полей записи. Как получить элемент списка с максимальным значением свойства?
Найти среднее арифметическое между максимальным значением матрицы и максимальным значением массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|