Удомельский форум   ◊
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум

Вернуться   Удомельский форум > Hard&Soft > Программирование
Справка Пользователи Календарь Сообщения за день
 
 
Опции темы Опции просмотра
Старый 03.10.2007, 13:13   #1
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию Выборка из текстового поля max()

Вообщем задачка такая:
В базе имеется текстовое поле формата: "XXX-DDMMYYYY-NNN", где XXX некие буковки, DDMMYYYY соотвественно дата в понятном формате =) и NNN цифровое значение от 001 и до 999 соотвественно.
Неообходимо выбрать максимальное значение NNN для определенной даты.
Есть у кого какие идеи, как можно реализовать данную задачу? Язык pg_SQL.
Troll вне форума  
Старый 03.10.2007, 15:12   #2
slonik
Пользователь
 
Аватар для slonik
 
Регистрация: 26.04.2006
Сообщений: 97
Вы сказали Спасибо: 10
Поблагодарили 28 раз(а) в 11 сообщениях
По умолчанию

Цитата:
Сообщение от Troll
Вообщем задачка такая:
В базе имеется текстовое поле формата: "XXX-DDMMYYYY-NNN", где XXX некие буковки, DDMMYYYY соотвественно дата в понятном формате =) и NNN цифровое значение от 001 и до 999 соотвественно.
Неообходимо выбрать максимальное значение NNN для определенной даты.
Есть у кого какие идеи, как можно реализовать данную задачу? Язык pg_SQL.
Нашел где спросить .
Основная идея такая:
1. Идём в магазин "Всё для сада и огорода" и покупаем самый большой секатор.
2. Идём в магазин "Книга" и покупаем "Большой словарь русского мата"
3. Ищем того кто разрабатывал эту базу.
4. Обрезаем неправильно растущие руки(см. пункт 1) и объясняем где они не правы(см. пункт 2)

P.S. Если на производительность пофиг, то выбираем из нашей таблицы поля вида ????DDMMYYYY????(DDMMYYYY это определенная дата) и вставляем во временную таблицу последние 3 символа из поля(ну может ид ещё); из временной таблицы выбираем максимальное поле.

P.P.S. Лутше всего, наверное, создать связанную таблицу, в которую положить эту строку разрезанную на три части и работать с ней, а для совместимости что-то типа хранимой процедуры замутить(ну или как она там в pg_SQL называется).
slonik вне форума  
Старый 04.10.2007, 09:42   #3
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

Цитата:
Сообщение от slonik
Нашел где спросить .
Основная идея такая:
1. Идём в магазин "Всё для сада и огорода" и покупаем самый большой секатор.
2. Идём в магазин "Книга" и покупаем "Большой словарь русского мата"
3. Ищем того кто разрабатывал эту базу.
4. Обрезаем неправильно растущие руки(см. пункт 1) и объясняем где они не правы(см. пункт 2)

P.S. Если на производительность пофиг, то выбираем из нашей таблицы поля вида ????DDMMYYYY????(DDMMYYYY это определенная дата) и вставляем во временную таблицу последние 3 символа из поля(ну может ид ещё); из временной таблицы выбираем максимальное поле.

P.P.S. Лутше всего, наверное, создать связанную таблицу, в которую положить эту строку разрезанную на три части и работать с ней, а для совместимости что-то типа хранимой процедуры замутить(ну или как она там в pg_SQL называется).
Ну почему же сдесь не спросить? Ответили же?
С первыми 4 пунктами полностью солидарен, но ехать далеко, да и языка не знаю )))
Так как до базы меня не пускають, имеем то, что имеем.
В общем остановился я на самом простом решении:
(Тут моя вина, условие описал не полностью и не совсем правильно, решение было неочевидно) Банальный подсчет кол-ва записей за дату DDMMYYYY Т.к. записи удалятся не могут по условию и шаг у NNN всегда 1 - это должно сработать. Т.е.
Код:
SELECT COUNT(FIELD)
FROM TABLE
WHERE FIELD LIKE "%DDMMYYYY%";
Troll вне форума  
Старый 13.12.2007, 08:53   #4
Munche
Новичок
 
Аватар для Munche
 
Регистрация: 13.12.2007
Адрес: Обнинск
Сообщений: 7
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Munche с помощью ICQ Отправить сообщение для Munche с помощью Skype™
По умолчанию

RegExp.pas вам в помощь (Для Delphi). Поищите в инете эту библиотеку и описание работы с ней, т.к. описываемый вами случай это именно анализ текста при помощи регулярных выражений.
Если нужно сделать именно на SQL, то без stored procedures вам не обойтись. Незнаю поддерживает их постгри или нет, не работал с ним
Munche вне форума  
Старый 25.12.2007, 22:16   #5
ales
Пользователь
 
Регистрация: 27.04.2006
Сообщений: 97
Вы сказали Спасибо: 42
Поблагодарили 16 раз(а) в 10 сообщениях
По умолчанию

На простом SQL я бы сделал так: select ... where (условие поле like "%DDMMYYYY%") order by (это поле)

и из результата взял первую или последнюю запись, в зависимости от порядка сортировки
ales вне форума  
Старый 26.12.2007, 11:49   #6
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

Цитата:
Сообщение от ales
На простом SQL я бы сделал так: select ... where (условие поле like "%DDMMYYYY%") order by (это поле)

и из результата взял первую или последнюю запись, в зависимости от порядка сортировки
Вы не очень внимательно прочитали условия задачи. Насколько я помню в простом SQL нету возможности работы с текстовыми полями и поэтому выборка из результата запроса нужной цифры не представляется возможной С другой стороны решения я уже нашёл и удачно использую.
Troll вне форума  
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:08. Часовой пояс GMT +3.


Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего браузера.
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot