|
|
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
Отзовитесь ГУРУ!!!!!! Есть таблица такой структуры log_id "Номер события" reader_id "Номер считывателя" token_id "Номер карточки" log_date "дата формата DATETIME" reader_id выдает либо 1 или 2 что сответстует "Вход " "Выход" Нужно что бы в результате запроса считалось время присутствия за указанный интервал день или сутки приблизительно так Номер карточки Дата Вход Выход Итого Протом если это день то все проще ,сложнее если пришел вечером ушел утром Очень прошу помочь !!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 10:33 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
Че-то сумбурно изложил, да еще в 3-х темах :) Как я понял, тебе нужно примерно вот это: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:38 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
Попробовал запрос не получаеться SELECT a.token_id, a.log_date, b.log_date, UNIX_TIMESTAMP (b.log_date) - UNIX_TIMESTAMP(a.log_date) AS h FROM access_log a INNER JOIN access_log b ON (a.token_id = b.token_id) WHERE (a.reader_id = 1) AND (b.reader_id = 2) AND (a.log_date >= '2004-05-27') AND (b.log_date <= '2004-05-27') Результат совсем не тот t.i b.log a.log h 1 31.05.2004 9:19:00 24.03.2004 18:24:00 -5838900 1 31.05.2004 9:38:00 24.03.2004 18:24:00 -5840040 16 27.05.2004 8:47:00 24.03.2004 18:07:00 -5492400 16 27.05.2004 9:27:00 24.03.2004 18:07:00 -5494800 16 27.05.2004 9:38:00 24.03.2004 18:07:00 -5495460 16 27.05.2004 13:43:00 24.03.2004 18:07:00 -5510160 А надо В таблице access_log такие данные r.i t.i log_date 2 51 24.03.2004 19:17:00 2 16 24.03.2004 18:24:00 2 1 24.03.2004 18:24:00 2 16 24.03.2004 18:07:00 2 1 24.03.2004 18:08:00 1 1 24.03.2004 18:06:00 2 1 24.03.2004 18:06:00 2 41 24.03.2004 18:06:00 1 41 24.03.2004 18:06:00 2 1 24.03.2004 17:00:00 1 52 24.03.2004 12:05:00 1 1 24.03.2004 12:05:00 2 52 24.03.2004 17:00:00 2 1 24.03.2004 11:49:00 2 41 24.03.2004 11:49:00 1 1 24.03.2004 11:49:00 2 41 24.03.2004 11:49:00 1 41 24.03.2004 11:49:00 где r.i это reader_id(вход или выход) t.i это token_id (номер карточки) log_date дата события Что бы был подсчет сколько времени отроботал работник интервал сутки если пришел в 9.00 25.05.2004 а ушел 21.00 25.05.04 =12 часов и соответственно пришел в 21.00 25.05.2004 а ушел 26.05.2004 тоже =12 часов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 10:07 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
По порядку и с подробностями: Как процесс происходит: чел пришел - есть запись с его token_id и reader_id=1, чел ушел - запись с его token_id и reader_id=2, так, што-ль? И объясни это: 2 41 24.03.2004 18:06:00 1 41 24.03.2004 18:06:00 2 41 24.03.2004 11:49:00 2 41 24.03.2004 11:49:00 1 41 24.03.2004 11:49:00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 18:22 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
Да точно так : чел пришел - есть запись с его token_id и reader_id=1, чел ушел - запись с его token_id и reader_id=2, так, што-ль? а это кто то зашел и зразу вышел 2 41 24.03.2004 18:06:00 1 41 24.03.2004 18:06:00 2 41 24.03.2004 11:49:00 2 41 24.03.2004 11:49:00 1 41 24.03.2004 11:49:00 Либо еще бывает карточки долго держат у считывателя и запись дублируеться я это убираю DISTINCT в основном что то так 1 41 29.05.2004 09:00:00 2 41 29.05.2004 21:00:00 1 32 29.05.2004 20:49:00 2 32 30.05.2004 09:15:00 Спасибо !!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 09:07 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
Ну, здесь, imho, проще всего изменить таблицу - вместо одного поля log_date сделать два: log_date_in и log_date_out (соотв. вход и выход), а reader_id выкинуть вообще. Тады проблема уйдет сама собой. В противном случае придется усложнять клиентскую часть или мутить со врЕменными таблицами, переменными и пр. Все IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 13:54 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
нет менять не получиться программа считывателя формирует так insert into access_log (log_id,log_sid,reader_id,reader_sid,token_id,token_sid,action,log_date,notes) values(null,1,1,1,95,1,'Обнаружен жетон, дверь открыта. ','2004-05-28 09:21:00','Ключ: 01 00 02 00 00 F7 E0 A0 Дата: 28.05.2004 Время: 9:21 Событие: Событие дверь 1: Обнаружен жетон, дверь открыта. ') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 14:41 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
Нда. По-моему, одним sql здесь не обойтись. Строки не имеют признака, по которому можно было бы однозначно сопоставить моменты "Пришел"/"Вышел". Вернее, он есть - очередность этих моментов, но я не нашел 100%-но работающего решения на одном только СКЛ. Все, что могу посоветовать, это делать выборку с сортировкой по log.date и подсчет на клиенте вести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 06:27 |
|
||
|
Еще раз прошу помочь
|
|||
|---|---|---|---|
|
#18+
Еслиб я в этом что то понимал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 13:54 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32540505&tid=1855095]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 445ms |

| 0 / 0 |
