Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизПодскажите можно ли на SQL таблицу Найти похожие ветки
← →
alucard © (2006-10-03 12:26) [0]Доброго дня.
Подскажите как на SQL создать таблицу которая будет содержать разницу текущей и предыдущей записи одного поля.
Спасибо.
← →
ANB © (2006-10-03 12:28) [1]никак. но можно написать запрос, который вернет набор данных с этим результатом.
← →
alucard © (2006-10-03 12:31) [2]
> ANB © (03.10.06 12:28) [1]
Это хорошо.
Как он примерно будет выглядеть?
Я не знаю как на SQL это реализовать.
← →
dr Gonzo © (2006-10-03 12:32) [3]На Paradox .... хм похоже, что на уровне БД никак. Тут только тригер поможет, который будет на Insert, Delete и Update по изменениям обновлять эту разностную таблицу.
← →
alucard © (2006-10-03 12:34) [4]
> dr Gonzo © (03.10.06 12:32) [3]
Да вот человек говорит что можно.
> ANB © (03.10.06 12:28) [1]
← →
Sergey13 © (2006-10-03 13:04) [5]> [4] alucard © (03.10.06 12:34)
Судя по топику
http://delphimaster.net/view/3-1159512584/
ты и тут напроектировал не слишком удачно. Почему бы не хранить наоборот - дельту изменения, а текущее значение получать сложением. Или хранить и то и другое для ускорения выборок (с точки зрения теории это не правильно, тем более для Парадокса, но иногда здорово выручает).
← →
alucard © (2006-10-03 13:09) [6]
> Sergey13 © (03.10.06 13:04) [5]
В базе и так записей не мало.
Если никак, тода это выход :)
> ANB © (03.10.06 12:28) [1]
За свои слова надо отвечать.
← →
Sergey13 © (2006-10-03 13:17) [7]> [6] alucard © (03.10.06 13:09)
> В базе и так записей не мало.
Ну и что? Потри лишнее.
> За свои слова надо отвечать
Что бы человек отвечал за свои слова, человеку надо платить за его слова.
1. Ты ему заплатил?
2. С чего ты взял, что он не прав?
← →
dr Gonzo © (2006-10-03 13:38) [8]Самый простой выход "В лоб", сразу скажу, что он НЕ ОПТИМАЛЕН. Использовать тупой цикл по всем записям и строить эту таблицу каждый раз. Реализовать можно как на Delphi так и на SQL с пом-ю курсоров.
Более нормальный подход связанный список => легкий Join удобство выборки. Например так:declare @T table (prevID int , pID int , nexID int, Value int )
SELECT A.pID, A.Value - B.Value AS Delta FROM @T AS A
LEFT JOIN @T AS B ON A.prevId = B.pId
← →
ANB © (2006-10-03 15:48) [9]
> За свои слова надо отвечать.
А я не обещал, что буду за тебя запрос писать. :) Я сказал, что написать его можно. Могу даже на халяву оракловый вариант запостить.
← →
dr Gonzo © (2006-10-03 16:42) [10]2 ANB © Давай, посмотрим реализацию, будет интересно.
← →
Stanislav © (2006-10-03 16:58) [11]Незнаю за парадокс, но на MSSQL должна работать.
alucard © (03.10.06 12:26) , так что ANB прав.
select table1.a-(select top 1 a from table where id<table1.id order by id) from table as table1
← →
k2 © (2006-10-03 16:58) [12]select col1, col2, col2 - lag(col2)over(partition by null order by col1) col3 from
(select 1 col1, 20 col2 from dual
union all
select 2, 22 from dual
union all
select 3, 45 from dual
union all
select 4, 16 from dual)
1 20
2 22 2
3 45 23
4 16 -29
← →
k2 © (2006-10-03 17:01) [13]лучше так select col1, col2, col2 - lag(col2)over(order by col1) col3 ... :)
← →
Mike Kouzmine © (2006-10-03 17:55) [14]в парадоксе после пост амба. никак не получешь. ни sql ни чем.
← →
alucard © (2006-10-04 10:37) [15]Спасибо.
а на парадоксе заработает?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c