Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Еще раз прошу помочь / 10 сообщений из 10, страница 1 из 1
28.05.2004, 10:33
    #32538138
softmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
Отзовитесь ГУРУ!!!!!!

Есть таблица такой структуры

log_id "Номер события"
reader_id "Номер считывателя"
token_id "Номер карточки"
log_date "дата формата DATETIME"

reader_id выдает либо 1 или 2 что сответстует "Вход " "Выход"
Нужно что бы в результате
запроса считалось время присутствия за указанный интервал день или сутки

приблизительно так
Номер карточки Дата Вход Выход Итого

Протом если это день то все проще ,сложнее если пришел вечером ушел утром


Очень прошу помочь !!!!!
...
Рейтинг: 0 / 0
28.05.2004, 17:38
    #32539425
mechanoid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
Че-то сумбурно изложил, да еще в 3-х темах :)
Как я понял, тебе нужно примерно вот это:
Код: plaintext
1.
2.
3.
SELECT a.token_id, a.log_date, b.log_date, UNIX_TIMESTAMP( b.log_date ) - UNIX_TIMESTAMP( a.log_date ) 
FROM t1 AS a
INNER JOIN t1 AS b ON a.token_id = b.token_id
WHERE a.reader_id =  1  AND b.reader_id =  2  AND a.log_date >= 'дата1' AND b.log_date <= 'дата2'
...
Рейтинг: 0 / 0
31.05.2004, 10:07
    #32540505
softmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
Попробовал запрос не получаеться
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 часов
...
Рейтинг: 0 / 0
31.05.2004, 18:22
    #32541579
mechanoid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
По порядку и с подробностями:
Как процесс происходит: чел пришел - есть запись с его 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
...
Рейтинг: 0 / 0
01.06.2004, 09:07
    #32541948
softmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
Да точно так : чел пришел - есть запись с его 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

Спасибо !!!!!!
...
Рейтинг: 0 / 0
01.06.2004, 13:54
    #32542771
mechanoid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
Ну, здесь, imho, проще всего изменить таблицу - вместо одного поля log_date сделать два: log_date_in и log_date_out (соотв. вход и выход), а reader_id выкинуть вообще. Тады проблема уйдет сама собой. В противном случае придется усложнять клиентскую часть или мутить со врЕменными таблицами, переменными и пр. Все IMHO.
...
Рейтинг: 0 / 0
01.06.2004, 14:41
    #32542922
softmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
нет менять не получиться программа считывателя формирует так

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: Обнаружен жетон, дверь открыта. ')
...
Рейтинг: 0 / 0
03.06.2004, 06:27
    #32545712
mechanoid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
Нда. По-моему, одним sql здесь не обойтись. Строки не имеют признака, по которому можно было бы однозначно сопоставить моменты "Пришел"/"Вышел". Вернее, он есть - очередность этих моментов, но я не нашел 100%-но работающего решения на одном только СКЛ. Все, что могу посоветовать, это делать выборку с сортировкой по log.date и подсчет на клиенте вести.
...
Рейтинг: 0 / 0
03.06.2004, 13:54
    #32546579
softmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
Еслиб я в этом что то понимал
...
Рейтинг: 0 / 0
03.06.2004, 16:00
    #32547023
softmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз прошу помочь
А может можно как то сформировать запрос
что то типа
Фио вход выход
потом если опять вход
Фио вход выход
как то так
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Еще раз прошу помочь / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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