Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Real time изменение записей!   Найти похожие ветки 

 
Pashkerton   (2004-09-22 10:41) [0]

Доброе Утро!
На MSSQL2000 Servere БД. В ней 2 таблицы. Записи на Servere обновляются и дополняются
каждые 2 минуты.
Таблица 1: records
| cardcode | time | date | action |

Таблица 2: personal
| cardcode | fio |

Значение поля action из таблицы 1 означает "1"-человек пришел, "0"-человек ушел.

Нужно на удалённой машине в realtime(возможно по таймеру) выводить fio всех кто на
данный момент пришел.
SELECT MAX(time) FROM records WHERE cardcode = "..." (одному из номеров из таблицы 2)
итак по всем номерам? Создавать на клиенте временную таблицу?
Есть какие нибудь решения такой задачи?


 
Суслик ©   (2004-09-22 10:52) [1]

1) real time это такое модное слово или оно имеет определенный смысл?
2) объяснил бы что значит time и date
3) где врем ухода?
4) если считается, что люди не уходят то запрос типа такого
select t2.fio
from table1 t1
inner join table2 t2 on t2.cardcode = t1.cardcode
where t1.time <= currecnt_timestamp


 
Miralex ©   (2004-09-22 10:53) [2]


> Pashkerton

По таймеру и делай выборки с таблицы.
(если есть проблемы с SQL языком - почитай статьи на citforum.ru)


 
Pashkerton   (2004-09-22 10:58) [3]

Исправляюсь.
1) Если кто пришел, то он сразу должен отобразиться на клиенте
2) time - время события, date - дата события
пример  123|11:00:00|2004/09/22|1| человек пришел в 11:00
       123|12:00:00|2004/09/22|0| человек ушел в 12:00
3) За уход/приход отвечает поле action


 
Суслик ©   (2004-09-22 11:03) [4]


>  [3] Pashkerton   (22.09.04 10:58)


> 3) За уход/приход отвечает поле action

да понял я уже - сначала невнимательно прочел вопрос.

на фига тебе два поля time и date?
есть же тип в mssql server datatime и smalldatetime?


> 1) Если кто пришел, то он сразу должен отобразиться на клиенте

так не выйдет - нужно переодически опрашивать.
Вернее теоретически можно, но сложно.

ЗЫ. ЗАпрос сейчас напишу.


 
КаПиБаРа ©   (2004-09-22 11:16) [5]

Нужен "сервер оповещений", который при добавлении записи в базу будет рассылать клиентам сообщения что  произошли изменения.

============================================
Сексом надо заниматься только в одном
единственном случае - когда он пpедставится.
============================================


 
Суслик ©   (2004-09-22 11:24) [6]


> ЗЫ. ЗАпрос сейчас напишу.

Пообещал, а написать не могу, т.к. нужно подумать, а времени нет. Прости :)


 
Pashkerton   (2004-09-22 11:33) [7]

Решение нашел!
завести таблицу со всеми карточками и где есть поле состояние (State).
при добавлении в журнал прихода/ухода обновлять это поле =  action.
тогда запрос будет выглядеть как select * from Table2 where State = 1
А можно где нибудь хранить временной штамп, и если он изменился - значит были внесены изменения то делать выборку.


 
Sandman25 ©   (2004-09-22 11:37) [8]

[7] Pashkerton   (22.09.04 11:33)

Лучше добавить поле - время последнего изменения.
И еще по триггеру писать в новую таблицу из одного поля и одной записи - время последнего изменения по всей таблице. Тогда сначала извлекается это значение, и если оказывается, что данные изменились, происходит выполнение select ... where datetime_change > :last_client_update для поиска измененный данных.


 
Johnmen ©   (2004-09-22 12:58) [9]

Примерно так

SELECT DISTINCT A.cardcode, B.fio FROM Таблица1 A
JOIN Таблица2 B ON B.cardcode=A.cardcode
WHERE (A.action=1) AND
 (A.datetime<=[интересующее датавремя]) AND
 (([интересующее датавремя]-A.datetime)=
   (SELECT MIN([интересующее датавремя]-A.datetime) FROM Таблица1 C
    WHERE (C.cardcode=A.cardcode) AND (A.action=1))) AND
 (NOT EXISTS (SELECT 0 FROM Таблица1 D
              WHERE (D.cardcode=A.cardcode) AND
                (D.action=0) AND
                (D.datetime<=[интересующее датавремя]) AND
                (D.datetime>=A.datetime)))


Если настаиваешь на раздельном хранении даты и времени, то сам модифицируешь. Я бы не стал настаивать...:)



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.059 c
3-1095740406
AngelSaint
2004-09-21 08:20
2004.10.17
Программный импорт в SQL Server из Access


14-1096077246
niknikn
2004-09-25 05:54
2004.10.17
winapi b .net


1-1096979228
Антоныч
2004-10-05 16:27
2004.10.17
вопрос по классам


4-1095405777
banderas
2004-09-17 11:22
2004.10.17
Имя пользователя


4-1095311625
SPeller
2004-09-16 09:13
2004.10.17
Сообщение при смене темы в ХР