powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как в цикле пройти все строки таблицы ...
18 сообщений из 18, страница 1 из 1
Как в цикле пройти все строки таблицы ...
    #32064923
Максим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Как в цикле пройти все строки таблицы и перенести все изменившиеся значения в другую таблицу, сортировка в таблице по идентичному полю. Тоесть, у меня в таблице записаны значения 1,2,3,3,4,5,5,5,...,0,1 ,каким образом можно выбрать те данные, которые не повторяются? (не считая варианта с distinct)
Заранее благодарен!
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32064926
doctor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RE каким образом можно выбрать те данные, которые не повторяются

как вариант, попробуй
Код: plaintext
1.
select fld1, fld2 from table group by fld1, fld2 having count(*) = '1'
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32064981
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если упоминает distinct, то ему (и из повторяющихся данных) строчки по одному экземпляру все же нужны, так что HAVING здесь не нужен...
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32064983
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Максим
Я не понял что Вам нужно, но одназначно про цикл нужно забыть.
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065007
Максим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня данные, которые поступают со счетчика, но они пишутся каждую секунду, а показания счетчика меняются не каждую секунду. Мне надо выбрать данные, которые подряд не повторяются, а именно подряд, потому что числа ходят по кругу(0,1,2,3,...99,0,1,2,...)
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065010
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может лучше не писать повторяющиеся строчки, чем потом пытаться их выкинуть?
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065016
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если SQL2K, то можно для другой таблицы instead of триггер на инсерт сделать, в котором и отсекать дубли.
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065020
Максим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что не все поля в записи повторяются, а только то поле, в которое записываются показания счетчика, а поле в которое пишется дата и время (оно в данном случае и выступает идентификатором) не повторяется!!
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065037
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I'm back! (отобедамши) :)

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

Опять же, возможно, вместо 98, 99, 0, 1... лучше регистрировать 98, 99, 100, 101... Но это все же действительно другая тема... ;)
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065083
Максим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема еще и в том, что в таблицу данные пошу не я, а клиентское приложение, которое опрашивает контроллер каждую секунду и записывает показания в таблицу!
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065088
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия сервера какая?
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065094
Максим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2K
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065119
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Максим
Покажите структуру таблицы
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065120
OMi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OMi
Гость
Имеет место путаница с этим полем, в котором 1,2,2,3...
В tbl1 dt - datetime (ключ), vl (любое значение)
dt - уникально каждую секунду, отобрать "сладкие парочки с уникальными vl. Вроде и раз-два-три не надо.
Код: plaintext
1.
2.
3.
SELECT MIN(dt), vl
FROM  dbo.tbl1
GROUP BY vl
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065124
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, там значения циклически повторяются.

При условии вставки каждым инсертом только одной записи можно:

1) сделать дополнительный столбец-флаг с дефолтом (0)
2) на табличку, в которую пишется информация с датчика (FirstTable) повесить триггер

Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger SomeTrigger on YourTable
instead of insert as 
begin
  if inserted.v1<>(select v1 from YourTable
    where dt=(select max(dt) from YourTable))
   update inserted set Flag= 1 
end
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065125
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если надо уже существующее преобразовать - то можно создать параллельную табличку и, не спеша, курсорчиком по одной записи то, что нужно и повставлять.
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065137
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Информация для размышления:
- Как часто нужно вычищать информацию и скидывать ее в другую таблицу?
- Что сделает клиентское приложение, если его вставку откатить в триггере?
...
Рейтинг: 0 / 0
Как в цикле пройти все строки таблицы ...
    #32065331
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот реальная иллюстрация для обсуждения "проблемы" - естественные ключи против суррогатных.

В данной задаче время (с дискретностью 1 сек.) - хороший естественный ключ, но нормального решения он не дает, т.к. записывается с показаний датчика с определенной погрешностью.

При вводе в таблицу хранения суррогатного ключа (целочисленный автоинкремент) - задачка решается с "пол-тычка":

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
declare @dat datetime, @unreal_value int
select @dat = getdate(), @unreal_value = - 1 

create table #t1 (id int identity( 1 , 1 ), d1 datetime not null, c1 smallint not null)

insert into #t1 (d1, c1) select dateadd(ss, 1 ,@dat),  1 
insert into #t1 (d1, c1) select dateadd(ss, 2 ,@dat),  2 
insert into #t1 (d1, c1) select dateadd(ss, 3 ,@dat),  2 
insert into #t1 (d1, c1) select dateadd(ss, 4 ,@dat),  2 
insert into #t1 (d1, c1) select dateadd(ss, 5 ,@dat),  3 
insert into #t1 (d1, c1) select dateadd(ss, 6 ,@dat),  3 
insert into #t1 (d1, c1) select dateadd(ss, 7 ,@dat),  4 
insert into #t1 (d1, c1) select dateadd(ss, 8 ,@dat),  5 
insert into #t1 (d1, c1) select dateadd(ss, 9 ,@dat),  7 
insert into #t1 (d1, c1) select dateadd(ss, 10 ,@dat),  7 
insert into #t1 (d1, c1) select dateadd(ss, 11 ,@dat),  7 
insert into #t1 (d1, c1) select dateadd(ss, 12 ,@dat),  7 
insert into #t1 (d1, c1) select dateadd(ss, 13 ,@dat),  3 
insert into #t1 (d1, c1) select dateadd(ss, 14 ,@dat),  3 
insert into #t1 (d1, c1) select dateadd(ss, 15 ,@dat),  1 

select t1.* from #t1 t1 left join #t1 t2 on t1.id = t2.id +  1  where t1.c1 <> isnull(t2.c1,@unreal_value)

drop table #t1
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как в цикле пройти все строки таблицы ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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