Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложная вьюха / 12 сообщений из 12, страница 1 из 1
20.06.2018, 09:59
    #39662868
psevdo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
Здравствуйте. Есть множество КПП (контрольно пропускной пункт; вертушка, к которой прикладываются карты). Регистрируются события в таблице event:
автор1) emplId - ID сотрудника
2) specId - ID специальности сотрудника
3) date - дата регистрации события
4) direction - направление (вход/выход)
5) kppId - ID КПП
6) description


Мне нужно посчитать время нахождения сотрудника на территории. Т.е. нужно считать <дата_выхода> - <дата_входа>.
Можно ли это реализовать через вьюху? Чтобы я потом забирал из нее данные.
...
Рейтинг: 0 / 0
20.06.2018, 10:24
    #39662886
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
psevdo,
а почему бы вместо date и direction не использовать date_in и date_out?
Меньше ошибок, проще считать.
...
Рейтинг: 0 / 0
20.06.2018, 10:30
    #39662894
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
А, понял. входить-выходить можно через разные ПП.
Тогда джойнить две копии таблицы по равенству ИД сотрудника и неравенству дат. Плюс ограничения на сутки, но это уже от специфики проблемы зависит. Данных маловато.
...
Рейтинг: 0 / 0
20.06.2018, 10:53
    #39662908
psevdo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
Проблема заключается еще в том, что люди могут проходить через КПП по нескольку раз за день.
...
Рейтинг: 0 / 0
20.06.2018, 17:24
    #39663192
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
Задача вполне решаемая.
Начни с нумерации записей для каждого сотрудника при сортировке по времени (читаем соотв. FAQ). Затем отбираем только те пары, где номер для входа на 1 меньше номера для выхода. Далее (если надо) берём пересечение этого интервала с рабочим временем (таблица или синтетика). Теперь Datediff() и суммируем. Всё.
...
Рейтинг: 0 / 0
20.06.2018, 22:31
    #39663298
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
psevdo,

Как считать случаи, когда был проход в одну сторону подряд два и более раз?
...
Рейтинг: 0 / 0
21.06.2018, 01:22
    #39663333
osxl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
miksoftpsevdo,

Как считать случаи, когда был проход в одну сторону подряд два и более раз?Не должно, КПП, сотрудник, зашел, вышел. (залогинился, разлогинился). Конечно не стоит исключать человеческий фактор но все же.
...
Рейтинг: 0 / 0
21.06.2018, 01:25
    #39663334
osxl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
AkinaЗадача вполне решаемая.
Начни с нумерации записей для каждого сотрудника при сортировке по времени (читаем соотв. FAQ). Затем отбираем только те пары, где номер для входа на 1 меньше номера для выхода. Далее (если надо) берём пересечение этого интервала с рабочим временем (таблица или синтетика). Теперь Datediff() и суммируем. Всё.Задача решаемая, но такое навряд ли во вьюху впихнешь.
...
Рейтинг: 0 / 0
21.06.2018, 01:33
    #39663336
osxl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
psevdoЗдравствуйте. Есть множество КПП (контрольно пропускной пункт; вертушка, к которой прикладываются карты). Регистрируются события в таблице event:
...
Мне нужно посчитать время нахождения сотрудника на территории. Т.е. нужно считать <дата_выхода> - <дата_входа>.
Можно ли это реализовать через вьюху? Чтобы я потом забирал из нее данные.Простейший вариант добавить еще одну таблицу, а на эту повесить триггер срабатывающий на "выход", в дополнительной будет накапливаться разница во времени, между входом и выходом. Вот ее можно и во вьюху, только надо ли, там уже можно обойтись простейшими запросами.
...
Рейтинг: 0 / 0
21.06.2018, 04:47
    #39663343
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
автор2) specId - ID специальности сотрудника
а это то чего тут делает, ему место в таблице сотрудников
...
Рейтинг: 0 / 0
21.06.2018, 11:06
    #39663459
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
osxlтакое навряд ли во вьюху впихнешьНормально впихнётся.
Другое дело, что вью явно админского уровня, пользоваться будет редко - а тогда нафига козе баян? ХП куда как правильнее..
...
Рейтинг: 0 / 0
21.06.2018, 14:00
    #39663641
osxl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная вьюха
Akinaosxlтакое навряд ли во вьюху впихнешьНормально впихнётся.
Другое дело, что вью явно админского уровня, пользоваться будет редко - а тогда нафига козе баян? ХП куда как правильнее..Хотелось бы наглядно видеть, как ЭТО нормально впихнуть. ХП правильнее чем что?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложная вьюха / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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