Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IB. Формирование запроса с расчетом данных по 1 - ой колонке [D6, Win95/98]


Страницы:   1 2

erika ©   (2005-07-29 08:24:00) 

Здравствуйте!
Возникла проблема: когда   я  формирую VIEW 3 (на основе двух других VIEW  и  Table1 - вызываются  все поля таблицы удовлетворяющие  условию), где  производится расчет следующего типа (view1.field1 - view1.field2 - view2.field1 ) field3, и  если ранее view1.field1 было null, то  field3 получается  пустым,  и запрос выполняется  очень долго, не  смотря на то, что в  результате  запроса появляется  всего 100 - 150 записей, максимум 200


Lexer   (2005-07-29 12:36:00) [1]

> Fay ©   (29.07.05 12:32) [37]
см. [25]

> Johnmen ©   (29.07.05 12:31) [36]
>А в целом, не надо путать проблемы отображения и хранения.
>Первые - удел приложения. И не имеют НИКАКОГО отношения ко вторым.

Согласен, у меня так и реализовано, хранение здесь, как и должно быть - в числовом формате, отображение - строка


Fay   (2005-07-29 12:35:00) [2]

2 Johnmen ©   (29.07.05 12:31) [36]
На самом деле, в 1-м диалекте есть нули. Не знал. Теперь знаю, но мне пофиг 8)


Lexer   (2005-07-29 12:33:00) [3]

[35] Fay ©   (29.07.05 12:30)
аналогично
странно...
может зависит от диалекта, у меня первый


Fay   (2005-07-29 12:32:00) [4]

2 Lexer ©   (29.07.05 12:29) [34]
Я возился с IB ещё с 4-й версии и ни разу не видел такого фокуса. М.б. забыл...


Johnmen   (2005-07-29 12:31:00) [5]

>Lexer ©   (29.07.05 12:20) [31]

Никаких подстав нет.
Много нулей - это значит у тебя 1 диалект. Так и д.б.
12.00 - это значит 3 диалект, так и д.б.

А в целом, не надо путать проблемы отображения и хранения.
Первые - удел приложения. И не имеют НИКАКОГО отношения ко вторым.


Fay   (2005-07-29 12:30:00) [6]

2 Lexer ©   (29.07.05 12:29) [34]
Firebird-1.5.2.4731-Win32


Lexer   (2005-07-29 12:29:00) [7]

[33] Fay ©   (29.07.05 12:25)
СУБД какая?


Fay   (2005-07-29 12:25:00) [8]

2 Lexer ©   (29.07.05 12:20) [31]
MSSQL вернул то же самое.


Fay   (2005-07-29 12:23:00) [9]

2 Lexer ©   (29.07.05 12:20) [31]
12.00
Но не 12.0000000


Lexer   (2005-07-29 12:20:00) [10]

Можно взглянуть на эту базу - исключено
backup metadata only - исключено
Лучше, конечно, с данными - смешно

да и смысл какой, выполни у себя вот это:
SELECT CAST(CAST(12 AS NUMERIC(15,2)) AS VARCHAR(20))
FROM Любая_таблица


и всё будет понятно.

зы: поубивал бы разработыиков IB6, FB за такую подставу.


Fay   (2005-07-29 12:16:00) [11]

2 Lexer ©   (29.07.05 12:13) [29]
Можно взглянуть на эту базу?
Меня вполне бы устроил backup metadata only с одной этой таблой. Лучше, конечно, с данными. OK?


Lexer   (2005-07-29 12:13:00) [12]

> Fay ©   (29.07.05 12:08) [28]
> Мне ни разу не удавался такой фокус. IBExpert так же возвращает?


да!

Кстати, я писал уже об этой проблеме, говорят и IB 6 также возвращает, и самое страшное то, что я заметил это только после миграции, этого я ни нашел ни в одной статье и доке.


Fay   (2005-07-29 12:08:00) [13]

2 Lexer ©   (29.07.05 11:57) [27]
Мне ни разу не удавался такой фокус. IBExpert так же возвращает?


Lexer   (2005-07-29 11:57:00) [14]

[26] Fay ©   (29.07.05 11:51)
>> Может это тоже моя ошибка?
>Несомненно!

неужели...

> Не понимаю
что тут не понятного? надо перевести несколько числовых полей в строку с рузделителями

> 1) каким образом число вдруг становится строкой?
CAST (число AS VARCHAR(20))

> 2) чему Вы улыбаетесь?
действительно, здесь плаать надо, столкнтесь с такой проблемой, поймете


Fay   (2005-07-29 11:51:00) [15]

2 Lexer ©   (29.07.05 11:49) [25]
>> Может это тоже моя ошибка?
Несомненно!
Не понимаю
1) каким образом число вдруг становится строкой?
2) чему Вы улыбаетесь?


Lexer   (2005-07-29 11:49:00) [16]

Сложность была вот в чем:
есть поля типа Numeric(15,2)
Поле1 = 1.12
Поле2 = 2
Поле3 = 3.1
Поле4 = 1
Поле5 = 0

Надо получить из строчку : '1.12/2/3.1/1/0'

В IB5 было все прекрасно, но в FB, полный бардак:
1.12000000/2.0000000/3.10000000/1.0000000/0.0000000000
Пришлось извращаться чтоб привести к нормальному виду

Может это тоже моя ошибка? =)


Fay   (2005-07-29 11:48:00) [17]

2 Lexer ©   (29.07.05 11:42) [23]

Как это связано с миграцией?


Lexer   (2005-07-29 11:42:00) [18]

>Еще были роблемы при преобразовании NUMERIC в CHAR(VARCHAR) - получалось так что 1 показывался как 0000001 после преобразования в строку, нули добивались до длины строки.
Извиняюсь, я ошибся, нолями строка добивается конечно же после цифры, т.е. 1 -> 1.0000000000000.

Вот наглядный пример:
SELECT CAST(CAST(112 AS NUMERIC(15,2)) AS VARCHAR(20))
 FROM Любая_таблица


Johnmen   (2005-07-29 11:28:00) [19]

>Lexer ©   (29.07.05 11:13) [21]

Интуичить надо было ! :)))
И по поводу нумерик в чар - это что ?


Lexer   (2005-07-29 11:13:00) [20]

Johnmen ©   (29.07.05 11:03) [20]
Всё сказанное всё-таки говорит об упущениях и ошибках при проектировании...


Это смешно и глупо!!!
Откуда я мог знать 3 года назад, используя IB 5, что придумают такую вещь как FireBird, а в нем нельзя будет использовать каких-то имен, и появятся новые ограничения.

Например: сейчас у меня есть таблица EMPLOYEE, а в следующих версиях это слово будет зарезервировано СУБД, и предется менять её название, это что моя ошибка?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо