Принципиальная проблема с запросом

Модераторы: kdv, CyberMax

Ответить
sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Принципиальная проблема с запросом

Сообщение sdsfy » 23 июл 2008, 15:44

Приветствую коллеги!

БД Interbase 5.5 и 2007
Диалект 1.

У меня есть таблица с полем под названием TIME. уж не помню как такая глупость завелась, но как факт, не могу написать запрос

select TIME from table1

сообщается ошибка! причем по ходу синтактическая. Но достаточно написать запрос

select * from table1

и все поля, включая TIME вызываются без ошибок.

но, по ходу мне необходимо оперировать в запросе конкретным столбцом. Есть ли возможность доступа к полю TIME в теле запроса. Само поле типа DateTime

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Re: Принципиальная проблема с запросом

Сообщение Kotъ-Begemotъ » 23 июл 2008, 16:49

пардон, кавычки нужны двойные. Вот так:

Код: Выделить всё

SELECT T.FIELD1, T.FIELD2, T."TIME" FROM TABLE T

sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Сообщение sdsfy » 23 июл 2008, 16:55

не работает и походу по причине того что диалект 1

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 23 июл 2008, 17:45

Меняй название поля. В 1м диалекте по-другому кажись не выйдет.

sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Сообщение sdsfy » 23 июл 2008, 17:51

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

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 23 июл 2008, 18:13

Что именно не решится запросом?
Берёшь своего старого клиента (кто там у тебя был, 5.6?) и подключившись, спокойно работаешь с полем TIME. После создания нового / переноса данных / удаления старого всё будет шоколадно.

sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Сообщение sdsfy » 23 июл 2008, 21:53

У меня из под старого клиента в теле запроса явно не получается указать поле с названием TIME. тупой перенос

Код: Выделить всё

update table1 set newtime = time
не прокатит. выдаст синтаксическую ошибку.


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

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 24 июл 2008, 13:10

sdsfy писал(а):избавиться от этого поля из-за проблем совместимости я не могу.
иногда это необходимо.

ЗЫ можно еще попробывать новое поле заполнить в тригере, и пройти холостым апдейтом.

Gera
Сообщения: 53
Зарегистрирован: 12 мар 2008, 17:34

Сообщение Gera » 24 июл 2008, 13:16

А может создать представление с алиасом на этот столбец?
Что-нибудь типа:

Код: Выделить всё

CREATE VIEW name (field1, field2, NewTime, field4...)
AS SELECT * FROM Table

sdsfy
Сообщения: 43
Зарегистрирован: 03 апр 2008, 00:09

Сообщение sdsfy » 24 июл 2008, 16:41

Насчет View не подумал. надо попробовать, если конечно он сделает то что надо. попробуем.

спасибо за совет

Ответить