![]() |
◊ |
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум |
![]() |
#1 |
Супер-Модератор
|
![]()
Вообщем задачка такая:
В базе имеется текстовое поле формата: "XXX-DDMMYYYY-NNN", где XXX некие буковки, DDMMYYYY соотвественно дата в понятном формате =) и NNN цифровое значение от 001 и до 999 соотвественно. Неообходимо выбрать максимальное значение NNN для определенной даты. Есть у кого какие идеи, как можно реализовать данную задачу? Язык pg_SQL. |
![]() |
![]() |
#2 | |
Пользователь
Регистрация: 26.04.2006
Сообщений: 97
Вы сказали Спасибо: 10
Поблагодарили 28 раз(а) в 11 сообщениях
|
![]() Цитата:
![]() Основная идея такая: 1. Идём в магазин "Всё для сада и огорода" и покупаем самый большой секатор. 2. Идём в магазин "Книга" и покупаем "Большой словарь русского мата" 3. Ищем того кто разрабатывал эту базу. 4. Обрезаем неправильно растущие руки(см. пункт 1) и объясняем где они не правы(см. пункт 2) P.S. Если на производительность пофиг, то выбираем из нашей таблицы поля вида ????DDMMYYYY????(DDMMYYYY это определенная дата) и вставляем во временную таблицу последние 3 символа из поля(ну может ид ещё); из временной таблицы выбираем максимальное поле. P.P.S. Лутше всего, наверное, создать связанную таблицу, в которую положить эту строку разрезанную на три части и работать с ней, а для совместимости что-то типа хранимой процедуры замутить(ну или как она там в pg_SQL называется). |
|
![]() |
![]() |
#3 | |
Супер-Модератор
|
![]() ![]() Цитата:
![]() С первыми 4 пунктами полностью солидарен, но ехать далеко, да и языка не знаю ))) Так как до базы меня не пускають, имеем то, что имеем. В общем остановился я на самом простом решении: (Тут моя вина, условие описал не полностью и не совсем правильно, решение было неочевидно) Банальный подсчет кол-ва записей за дату DDMMYYYY ![]() Код:
SELECT COUNT(FIELD) FROM TABLE WHERE FIELD LIKE "%DDMMYYYY%"; |
|
![]() |
![]() |
#4 |
Новичок
|
![]()
RegExp.pas вам в помощь (Для Delphi). Поищите в инете эту библиотеку и описание работы с ней, т.к. описываемый вами случай это именно анализ текста при помощи регулярных выражений.
Если нужно сделать именно на SQL, то без stored procedures вам не обойтись. Незнаю поддерживает их постгри или нет, не работал с ним ![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 27.04.2006
Сообщений: 97
Вы сказали Спасибо: 42
Поблагодарили 16 раз(а) в 10 сообщениях
|
![]()
На простом SQL я бы сделал так: select ... where (условие поле like "%DDMMYYYY%") order by (это поле)
и из результата взял первую или последнюю запись, в зависимости от порядка сортировки |
![]() |
![]() |
#6 | |
Супер-Модератор
|
![]() Цитата:
![]() |
|
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|