powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Заполнение столбца в таблице из результатов предыдущих столбцов
9 сообщений из 34, страница 2 из 2
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36251879
Фотография TmpFile()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойPaulS1986
что есть t_downtime ?
t_downtime есть имя создаваемой временной таблицы, хранящей результат выполнения select

Этот огород с временной таблицей от того, что в UPDATE нельзя использовать конструкцию с подзапросом из модифицируемой таблицы.
Да и вообще читать документацию и теорию учить.
Может вам вполне сгодиться вид (view) создать, на основе запроса приведенного выше, и уже его использовать для поставленных целей. Кстати, именно от них все и зависит. Для чего вообще этот огород нужен?
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36252362
PaulS1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TmpFile(),

Этот огород нужен для вычисления времени работы от включения до выключения
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36254017
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulS1986, Вы несколько не так поняли вопрос... Насколько часто эта операция нужна? если эти данные нужно хранить постоянно - то варианта как минимум 2:
1. Делать вычисление uptime оперативно и сохранять сразу по факту занесения очередной записи в таблицу
2. Делать обновление строк периодически - для которых uptime is null

3 вариант: каждый раз считать его на лету.

Всё это время обсуждался как раз второй вариант. Я бы выбрал 1-ый. А может вас вполне устроит 3-ий - без поля в самой таблице...
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36263660
PaulS1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, добил я этот скрипт, вот что получилось :


STOP='YYYY-MM-DD HH:MM:SS'
START='YYYY-MM-DD HH:MM:SS'
#
dbaccess dbadb <<EOF!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
INSERT INTO downtime(stop_time,start_time) VALUES('$STOP','$START');
SELECT d1.did, 
.......d1.stop_time - (select d2.start_time 
.....................from downtime d2
.......................where d2.did = (select max(did)
.........................................from downtime
.........................................where did <  d1.did)) uptime                                                   
FROM downtime d1
INTO temp t1_downtime with no log;

SELECT did, uptime FROM t1_downtime
WHERE did=(select max(did) from t1_downtime)
INTO temp t2_downtime with no log;

SELECT did,
..........cast(cast(uptime as interval day to second)
..........as interval second( 9 ) to second)|| ' '+ 0  uptime                     
FROM t2_downtime
INTO temp t3_downtime with no log;

UPDATE downtime
   SET uptime=(select uptime from t3_downtime where did=downtime.did);
!EOF

Всем СПС за помощь!!!:)
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36263743
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulS1986
.......d1.stop_time - (select d2.start_time

PaulS1986, пользуй кнопку "SRC"...
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36267371
PaulS1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ollegВот integer:

cast(
cast('44 02:40:36' as interval day to second)
as interval second(9) to second)||' '+0

А как лучше изменить этот запрос, если дата не '44 02:40:36' а скажем '144 02:40:36' ?
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36267527
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulS1986ollegВот integer:

cast(
cast('44 02:40:36' as interval day to second)
as interval second(9) to second)||' '+0

А как лучше изменить этот запрос, если дата не '44 02:40:36' а скажем '144 02:40:36' ?

А что не так в запросе?
Какую ошибку возвращает сервер?

А в чем разница между этими двумя выражениями:
interval second to second
interval second(9) to second
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36268658
PaulS1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если число дней больше 100 вылазит ошибка :

1265: Overflow occurred on a datetime or interval operation.
Error in line 4
Near character position 14

а если меньше то работает О_о
...
Рейтинг: 0 / 0
Заполнение столбца в таблице из результатов предыдущих столбцов
    #36268853
PaulS1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получилось!:)
запрос :
SELECT
Код: plaintext
cast('144 02:40:36' AS interval second to second)
FROM downtime
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Informix [игнор отключен] [закрыт для гостей] / Заполнение столбца в таблице из результатов предыдущих столбцов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]