powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создать сложный запрос на C#
12 сообщений из 12, страница 1 из 1
Создать сложный запрос на C#
    #39201985
natsad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день форумчане!
У меня стоит задача создать сложный запрос.
Есть три таблицы в одном базе (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 хранятся все события которые были фиксированные турникетами.
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202052
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natsad,

А как ты планируешь найти соответствие двум событиям: вход - выход?
Ну например, я вошел через главный вход, выпрыгнул через окно на первом этаже в туалете, затем зашел через тот же главный вход, а вечером вышел через пожарный выход.
Т.е., с точки зрения СКД, я вошел два раза подряд, а вышел только после второго входа.
Как должна выглядеть таблица?
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202078
natsad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица должна быть как на рисунке. Если например вышел только после второго входа, то соответственно ячейка первого выхода должна быть пустым или 0. Здесь еще будет сортировка по двум колонкам "ORDER BY userid, eventdate ASC".
Например:

Имя | Фамилия | Отдел | Вход | Ридерайди | Выход | Ридерайди |
Иван Иванов ТБ 08:30 Головной офис 00:00 -------
Иван Иванов ТБ 10:15 Головной офис 12:30 Пожарный выход1

и т.д.
Ну вот так типа должна выглядеть.
Есть ли у кого-нибудь идеи.
Я не могу распределить в одной строке вход-выход.
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202450
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я нефига не понял, но внимательнее бы смотрел за Даминовой Суфьей. Два раза вышла через что-то (турникет не определен), но при этом не входила. Проблема то в чем? Сформировать запрос?
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202454
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
natsad,

А где хранятся времена входа и выхода?
Почему точки входа-выхода не в отдельной таблице?
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202457
natsad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так,
Сотрудник входит или выходит через турникеты используя свои карточки магнитные. В случае Даминовой, она не входила по карточке (просто охраник открыл дверь через кнопку), но выходила по карточке.

Времена входов и выходов копятся в таблице 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---|
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202528
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natsadВ случае Даминовой, она не входила по карточке (просто охраник открыл дверь через кнопку), но выходила по карточке
выговор сделать охраннику в данном случае.

В остальном классическим select тут не решается. Надо писать код либо на клиенте, либо на сервере. Суть кода: сортируешь выборку по (юзер, время) перебираешь последовательно с учетом вход/выход и строишь таблицу.
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202663
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цель-то какая всего этого? Просто вывести вот такую вот таблицу или найти все нарушения (два входа/выхода подряд)?
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202782
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natsad,

так в чем проблема, все просто, sql в зубы и вперед , join вам в помощь, все связи между таблицами есть.
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39202810
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
16768527

Или вообще всю тему почитайте
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39203510
natsad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята всем спасибо большое за советы. У меня получилось решить задачу эту. Хорошие советы дал пользователь javajdbc в другой теме. Отдельное спасибо Arm79 и Dima T.
...
Рейтинг: 0 / 0
Создать сложный запрос на C#
    #39206531
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
natsad,

Эх. Вы бы еще и моего совета послушались бы
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создать сложный запрос на C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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