|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
Добрый день форумчане! У меня стоит задача создать сложный запрос. Есть три таблицы в одном базе (table1, table2, table3). Поля table1: userid, eventdate, readerid Поля table2: userid, firstname, lastname, departmentid Поля table3: departmentid, departmentname Требуется вытащить данные например в Datagridview в таком виде: firstname, lastname, departmentname, eventdate ("Вход внутрь"), readerid ("Головной офис"), eventdate ("Выход наружу"), readerid ("Пожарный выход 1") Это система контроля доступа у нас в офисе стоит и требуют отчеты у нас начальство, кто входил, кто выходил за определенный промежуток времени. Вложении есть рисунок примерный вид отчета. В table1 хранятся все события которые были фиксированные турникетами. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 12:43 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
natsad, А как ты планируешь найти соответствие двум событиям: вход - выход? Ну например, я вошел через главный вход, выпрыгнул через окно на первом этаже в туалете, затем зашел через тот же главный вход, а вечером вышел через пожарный выход. Т.е., с точки зрения СКД, я вошел два раза подряд, а вышел только после второго входа. Как должна выглядеть таблица? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 13:42 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
Таблица должна быть как на рисунке. Если например вышел только после второго входа, то соответственно ячейка первого выхода должна быть пустым или 0. Здесь еще будет сортировка по двум колонкам "ORDER BY userid, eventdate ASC". Например: Имя | Фамилия | Отдел | Вход | Ридерайди | Выход | Ридерайди | Иван Иванов ТБ 08:30 Головной офис 00:00 ------- Иван Иванов ТБ 10:15 Головной офис 12:30 Пожарный выход1 и т.д. Ну вот так типа должна выглядеть. Есть ли у кого-нибудь идеи. Я не могу распределить в одной строке вход-выход. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 14:00 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
Я нефига не понял, но внимательнее бы смотрел за Даминовой Суфьей. Два раза вышла через что-то (турникет не определен), но при этом не входила. Проблема то в чем? Сформировать запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 18:27 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
natsad, А где хранятся времена входа и выхода? Почему точки входа-выхода не в отдельной таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 18:30 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
Так, Сотрудник входит или выходит через турникеты используя свои карточки магнитные. В случае Даминовой, она не входила по карточке (просто охраник открыл дверь через кнопку), но выходила по карточке. Времена входов и выходов копятся в таблице table1: Времена это - колонка eventdate Турникеты это - колонка readerid. А в колонку readerid попадают integer значения: 1) входы - 1,3,7,9,12 2) выходы - 2,4,8,10,11 Вот так бы хотел получить таблицу: Например человек вошел 8 утра, но вышел не по турникету, затем вошел в 10:15, затем вышел в 12:30. ----Имя----|----Фамилия----|----Отдел----|----Вход----|----Ридерайди----|----Выход----|----Ридерайди----| ---Иван----|----Иванов-----|---- ТБ -------|---08:30---|---Головной офис-|---00:00------|------------------| ---Иван----|----Иванов-----|-----ТБ-------|---10:15----|--Головной офис--|---12:30------|--Пожарный выход1---| ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 18:37 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
natsadВ случае Даминовой, она не входила по карточке (просто охраник открыл дверь через кнопку), но выходила по карточке выговор сделать охраннику в данном случае. В остальном классическим select тут не решается. Надо писать код либо на клиенте, либо на сервере. Суть кода: сортируешь выборку по (юзер, время) перебираешь последовательно с учетом вход/выход и строишь таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 20:22 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
Цель-то какая всего этого? Просто вывести вот такую вот таблицу или найти все нарушения (два входа/выхода подряд)? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 06:14 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
natsad, так в чем проблема, все просто, sql в зубы и вперед , join вам в помощь, все связи между таблицами есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 09:58 |
|
Создать сложный запрос на C#
|
|||
---|---|---|---|
#18+
Ребята всем спасибо большое за советы. У меня получилось решить задачу эту. Хорошие советы дал пользователь javajdbc в другой теме. Отдельное спасибо Arm79 и Dima T. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 18:06 |
|
|
start [/forum/topic.php?fid=20&fpage=64&tid=1400689]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
194ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 288ms |
total: | 583ms |
0 / 0 |