Re[2]: ORDER BY строка?

2006-02-22 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

22.02.2006 в 11:23, Вы писали:

 DK Я не хочу продолжать эту тему, т.к. объяснять 10 раз одно и тоже самое
 DK нет смысла.

AC Продолжай, продолжай.
AC Ты всех победишь.
AC Все не правы.
AC И упорствуют в неведении своём...

Я нее говорил, что кто-то не прав, и не стараюсь победить, наоборот
прислушался ко всем советам. Да действительно переделать задачу с
суффиксами и префиксами это правильно и сортировать по ИНТЕДЖЕРУ
который в середине, это хорошо но для моего проекта (надо переделать
клиентов, вынести эти ИНТЕДЖЕРЫ с уже существующих номеров что
практически не реально т.к. там уже есть другие циферки базы то
набиты) это очень дорогой рефакторинг, вот и пришлось выходить из того
что есть, а там гляди в новых версиях FB появятся и вычисляемые
индексы.

Мы ушли от темы, задача изначально была в другом как отсортировать, а
не как переделать. Я просто пытался ответить каждому, вот и получился
маленький флем. :( 
-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 8:57, Вы писали:

SR Напиши UDF которая выкусывает из строки число. Создай Integer поле,
SR которое заполняй в триггере, вызывая эту UDF. По этому полю и сортируй.

Этот вариант не подойдет т.к. чисел может быть несколько например
СФ-2006/02/12-15, хотя по скорости был бы идеален.

-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 9:09, Вы писали:

Ю Предлагаю напустить хитрый апдейт на это поле и исправить сразу, чтоб
Ю потом головняков меньше было.

Так и будет только это можно будет сделать только с нового года т.к.
по документам уже везде пошли такие номера и менять их нельзя, можно
конечно и на клиенте убирать нули но нумерация может быть и с нулями и
без.

-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 11:24, Вы писали:

SR И какое цыфирь из этого ты хочешь использовать для сорта?

SR 2006/02/12-15 = 68.58 Эту? ;)

:) Тут как строку, но если строка содержит только цифры тогда надо
сортировать как цифры.

-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 12:23, Вы писали:

SR Ну дык, еще раз: пишешь UDF, в которой парсишь свой магический номер 
SR документа, если можно извлечь число -извлекаешь, если нет возвращаешь 
SR NULL. В ORDER BY пишешь:
SR CASE WHEN INTEGER_FIELD IS NULL THEN CHAR_FIELD ELSE CAST(INTEGER_FIELD
SR AS VARCHAR(20)) END

Да уже разобрался то ж написал, буду делать с УДФ :), просто ответил
на вопрос.

  Этот вариант не подойдет т.к. чисел может быть несколько например
  СФ-2006/02/12-15, хотя по скорости был бы идеален.

SR Но вообще-то надо в консерватории править. Ты _три_ сущности (серия, 
SR номер и дата документа) хранишь в одном поле. Подумай над этим.

Я не храню 3 сущности это только номер, у меня есть шаблонная
нумерация которая позволяет вставлять в номер и дату, и месяц и
квартал и год и номер склада и подразделения и т.д., это желание
клиента из чего он формируется.

-- 
С Уважением, Дмитрий Котельников



Re: Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Oleg LOA
Alexander Kolokolzov [EMAIL PROTECTED] wrote in message news:[EMAIL 
PROTECTED]
 Показывать номер клиенту и хранить номер в базе - две большие разницы. Я бы 
 такой составной номер хранил в виде различных полей, а перед выводом собирал 
 бы их все в кучу. И тебе счастье и юзеру.

Номер атомарен? Боюсь что да, тогда какой смысл имеют его отдельные куски в БД?

Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 14:08, Вы писали:

AC Нету у него формата, Олег.
AC Сплошная импровизация операторов вместо этого.
AC Посмотри его пример.

Это всего лишь был пример, именно пример.

Почему импровизация, и хранить разобранный номер не имеет смысла, т.к.
номер формируется при создании документа и храниться дальше как набор
символов т.к. какой смысл его хранить по отдельности если по
отдельности эти данные пользователю не понадобятся это просто номер
документа но просто сложный номер, а зачем мне хранить, вот примеры
шаблонов для номера, для генерации номера значит мне надо в каждом
поле хранить еще большую строку форматирования, а строка
форматирования может меняться с определенного момента, т.е. для
каждой строчки она может быть разной, а не глобальной для каждой
таблицы документа.

#номер_5#=Номер документа с лидирующими нулями при разрядности 5,  например 
5
#номер_4#=Номер документа с лидирующими нулями при разрядности 4,  например 0175
#номер_3#=Номер документа с лидирующими нулями при разрядности 3,  например 032
#номер_2#=Номер документа с лидирующими нулями при разрядности 2,  например 04
#номер#=Номер документа без лидирующих нулей при любой разрядности,  например 
478
#квартал#=Номер квартала 
#квартал_рим#=Номер квартала римскими
#полугодие#=Номер полугодия
#год_4#=Год в формате 4 чисел, например 2004
#год_2#=Год в формате 2 чисел, например 04
#год_1#=Год в формате 1 числа, например 4
#месяц_0#=Месяц с лидирующим нулем, например 09 или 12
#месяц#=Месяц без лидирующего нуля, например 9 или 12
#число_0#=Число с лидирующим нулем, например 05 или 18
#число#=Число без лидирующего нуля, например 5 или 18
#час#=Время: час
#минута#=Время: минуты
#букв_месяц#=Месяц словами, например Октябрь
#букв_месяц-1_год#=Предыдущий месяц словами и год, например сегодня 15.10.2003 
выведет Сентябрь 2003
#букв_месяц+1_год#=Следующий месяц словами и год, например сегодня 15.10.2003 
выведет Ноябрь 2003
#букв_квартал-1_год#=Предшествующий квартал и год, например сегодня 15.10.2003 
выведет 3 Кв. 2003
#букв_квартал+1_год#=Следующий квартал и год, например сегодня 15.10.2003 
выведет 3 Кв. 2003
#АктФирма.ЗКПО#=Код ЗКПО 
и т.д.

-- 
С Уважением, Дмитрий Котельников



Re: Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Oleg LOA
Dmitry Kotelnikov [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED]
 Да какая маска, номер произвольный, захотел формируешь по шаблону как
 описал раньше захотел написал Вася9, это и есть номер.

А тогда о какой собственно упорядоченности идёт речь? Выясни алгоритм 
опредления порядка у заказчика по такому множеству номеров и реализуй его, чего 
людям голову в конференции морочить? Сексуальные фатанзии твоего заказчика 
на тему томика Поиск и Сортировка небезизвестного товарища нам не понять ;-)

Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 15:09, Вы писали:

D Dmitry Kotelnikov wrote:
 Многабукв

DА ведь всего лишь вторник. Что же ещё будет в пятницу? :-D

Это Вы меня типа цитировали или как? Интересно в каком посте я мог
такое написать, вот прошел поиском не нашел?

-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 15:24, Вы писали:

SR Dmitry Kotelnikov пишет:
 #номер_5#=Номер документа с лидирующими нулями при разрядности 5,  например 
 5
 #номер_4#=Номер документа с лидирующими нулями при разрядности 4,  например 
 0175
 #букв_месяц+1_год#=Следующий месяц словами и год, например сегодня 
 15.10.2003 выведет Ноябрь 2003
 #букв_квартал-1_год#=Предшествующий квартал и год, например сегодня 
 15.10.2003 выведет 3 Кв. 2003
 #букв_квартал+1_год#=Следующий квартал и год, например сегодня 15.10.2003 
 выведет 3 Кв. 2003
 #АктФирма.ЗКПО#=Код ЗКПО 
 и т.д.
 

SR Эээ... Это ноухау в шифровании данных. :)

Читайте полностью пост, а не через строку. Блин народ, это тут принято
так постебатся с новичка или как :)???

Это строки форматирование нумерации в моей программе, которые я
показал для того чтобы доказать что разделение нумерации на
составляющие это в данном случае не подходит.

-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 15:59, Вы писали:

SR ИМХО, как бы это помягче сказать, у тебя не самое удачное архитектурное
SR решение. Форматирование в удобном для юзера виде вещь нужная и полезная.
SR НО! Это дело клиента и только клиента. Не дело хранить такую кашу на 
SR сервере.

А какая же это каша, это тоже самое что сказать зачем хранить мою
фамилию Котельников полностью в отдельном поле если можно создать
табличку с буковками и сделать ссылки на них формируя свою фамилию,
согласны это перебор. Фамилия это набор символов также как и номер
который не надо делить на какие-то составляющие это просто набор
символов, а форматирование это просто создано на стороне клиента для
того чтобы человеку предлагался номер документа на основе заранее
заданного шаблона самим пользователем (и пользователи этим пользуются
очень часто). Номер просто предлагается ,а пользователь может и его
менять.

SR Простейший пример: У клиентов, имеющих разные настройки формата даты, 
SR полезут разные номера, при прочих равных настройках.

Ничего подобного, не полезут я форматирую число, месяц, дату в разных
форматах которое задается 2 символа или 4 и т.д., у меня своя система
форматирования независящая от локализации и от других факторов, я же
приводил пример форматирования.

-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 17:20, Вы писали:

DK вот как раз твой этот номер - он составной. Он НЕ целый и неделимый.
DK Как минимум потому, что там есть символы /. И еще потому, что ты его
DK хочешь сортировать в экзотическом виде.

Символ / был показан как пример, порядок этих шаблонов может быть
любой и сомвол тоже другой например ., , , qwerty, 55, %

DK правильно. выдача по шаблону формируется из ... ? Например.
DK Дата хранится в двоичном виде. Пользователю выводится и так и эдак,
DK в зависимости от конкретного локального формата даты.
DK Грубо говоря, в зависимости от формата ПРЕОБРАЗОВАНИЯ этого самого
DK числа в строку.

Не надо и так и этак есть шаблоны которые я привел по ним формируется
строка и все, а изначально было задано число без лидирующих нулей вот
в этом ошибка и была, исправить базу будет возможно только с Нового
года, т.к. нумерация уже пошла ро бухгалтерским документам, надо было
просто выйти из положения пока. Посоветовали, все ОК, все работает.
Всем большое спасибо. Серьезно задача уже выполняет то что нужно.  :)

DK И, на всякий случай - все, что хранится в строке, подчиняется
DK правилам сортировки строк. Это если именно строки и сортировать,
DK то есть сравнивать их между собой.

Вряд ли там можно выработать какие-то правила, я же приводил примеры
шаблонов, просто набор символов, просто строка.

DK ну ты же из чего то отформатировал, так? пусть жестко, пусть едино
DK для всех, но изначально-то форматирование и предполагает преобразование
DK информации, хранимой в одном виде, в иной, заданный, формат.

Ну... Если хранить строки форматирования это большие растраты при
СЕЛЕКТЕ + больше места будет занимать в базе т.к. строки
форматирования больше чем, а разбить их на составляющие невозможно
т.к. в форматировании присутствует произвольный текст + форматирование
+ в разных местах + переменные форматирования могут добавляться.

Давайте закончим эту тему :) серьезно Ё-МАЁ (с)

ЗЫ: скоро напишу про проблемы с АЛТЕР + АПДЕЙТ в разных транзакциях
где АПДЕЙТИТСЯ другой рядок, только найду рабочую ошибку,
встречалась ли такая проблема раньше?

-- 
С Уважением, Дмитрий Котельников



Re[2]: ORDER BY строка?

2006-02-21 Пенетрантность Dmitry Kotelnikov
Приветствую Вас,

21.02.2006 в 18:24, Вы писали:

D наверное всё-таки в одной транзакции и апдейтится не другой рядок а
D другая колоночка потому что именно так такая проблема встречалась раньше
D встречается нынче и будет встречаться ещё некоторое время потому что 
D пока альтер ещё не коммичен то он на самом деле не выполнен но записи в
D системных таблицах уже есть и их эта транзакция видит в отличие от 
D других а на самом деле внутренние структуры ещё не готовы а чтобы 
D апдейтился другой рядок этого ещё не видали если не путались в 
D транзакциях с модификациями полей которые входят в вере апдейта

Да именно колонка, это я что-то уже к вечеру был подусталый. Но вреде
АЛТЕР был закомичен, это были компоненты IBX и сервер 1.5.2 (вроде). Я
пробовал такую же ситуацию в IB Expert, нормально работало. А с IBX
чтобы нормально работал АЛЬТЕР и АПДЕЙТ надо было делать РЕКОНЕКТ
между ними, может это был глюк IBX.
Найду рабочий пример обязательно пришлю.

-- 
С Уважением, Дмитрий Котельников