|
|
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#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:47 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
natsad, ничего сложного тут нет, читайте про объединение таблиц в запросе select. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 15:28 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
Я уже пробывал с JOIN -ами , в принципе объединял. Но распределять входы и выходы в одной строке не смог. Если есть идеи пожалуйста поделитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 17:48 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
Тебе просто нужны две копии таблицы событий. Из одной бери входы, из второй выходы. Заодно обдумай, что будешь делать, если у тебя идут подряд два входа или два выхода - стопудово рабочий момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 18:09 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
уже так делал на две таблицы, в одном вытащил входы а в другом выходы. А в третьей хотел распределять эти входы и выходы. Но получалось подругому, Вот так бы хотел получить таблицу: Например человек вошел 8 утра, но вышел не по турникету, затем вошел в 10:15, затем вышел в 12:30. ----Имя----|----Фамилия----|----Отдел----|----Вход----|----Ридерайди----|----Выход----|----Ридерайди----| ---Иван----|----Иванов-----|---- ТБ -------|---08:30---|---Головной офис-|---00:00------|------------------| ---Иван----|----Иванов-----|-----ТБ-------|---10:15----|--Головной офис--|---12:30------|--Пожарный выход1---| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 18:20 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
natsad, Имеется ли отдельная таблица ридерИД где указан тип ридера вход или выход? каким образом извесно что "Пожарный Выход 1" принадлежит зданию "Головной Офисе"? Задача решается примерно так: 1. данные делятся по userid. 2 для каждого userид данные сортируются по времени и пронумеровываются. СМотрите ФАК топик 7488722 3. каждая запись соединяется со следуюшей по порядковому номеру, путем JOIN самой на себя по условию T1.nomer = T2.nomer + 1 4. каждая пара является "полной" если выполняется: 4.1. у пары одинаковый юзер 4.2. первая запись это вход а вторая -- выход 4.3 оба ридера принадлежат одному зданию 4. полные пары получают новое поле статус=1, неполные пары получают статус=0 5. Для конечного результата выбираем UNION из двух выборок: 5.1. все полные пары (статус=1) 5.2 все записи из оригинальной таблицы которы не являются входом или выходом для полных пар ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 04:22 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
javajdbc, А можешь написать по техническими элементами типа select from и т.д. Времена входов и выходов копятся в таблице table1: Времена это - колонка eventdate Турникеты это - колонка readerid. А в колонку readerid попадают integer значения: 1) входы - 1,3,7,9,12 2) выходы - 2,4,8,10,11 Эти все колонки в table1. И этот момент не понял, уточни пожалуйста: 3. каждая запись соединяется со следуюшей по порядковому номеру, путем JOIN самой на себя по условию T1.nomer = T2.nomer + 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 05:28 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
natsadjavajdbc, А можешь написать по техническими элементами типа select from и т.д. Времена входов и выходов копятся в таблице table1: Времена это - колонка eventdate Турникеты это - колонка readerid. А в колонку readerid попадают integer значения: 1) входы - 1,3,7,9,12 2) выходы - 2,4,8,10,11 Эти все колонки в table1. И этот момент не понял, уточни пожалуйста: 3. каждая запись соединяется со следуюшей по порядковому номеру, путем JOIN самой на себя по условию T1.nomer = T2.nomer + 1 1. нужна информация принадлежности конкретного входа или выхода к зданию. Или подразумевает что в здании ОДИН вход и ОДИН выход и они записаны строго в последовательные пары: 1,2 вход-выход одного здания, 3,4 -- вход выход другово здания.... так или нет? 2. после того как КАЖДАЯ запись в таблице получит последовательный порядковый номер 1,2,3,4.... надо будет сформировать пары: Код: sql 1. 2. 3. 4. 5. ...ну а затем проверка на валидность пары по указаным условиям... 3. Что бы не мучастя strоить один СКЛ, можно сделать по шагам.... типа create table step1 as select.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 06:32 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
1) Здесь никакой роли не играет здание, главное тут ридеры (то есть считыватели при поднесении магнитной карточки срабатывает). a) Турникет 1 вход - айди ридера 1 b) Турникет 1 выход - айди ридера 2 c) Пожарный выход 2 вход - айди ридера 7 d) Пожарный выход 2 выход - айди ридера 8 e) Пожарный выход 1 вход - айди ридера 9 f) Пожарный выход 1 выход - айди ридера 10 g) Турникет 3 вход - айди ридера 12 h) Турникет 3 выход - айди ридера 11 Считыватели начиная с а) до f) - они находятся в Головном офисе. Считыватели g) и h) находятся в здании Айша (в другом здании). А если там встречаются например сотрудник зашел 3 раза подряд и вышел тока после третьего входа. Как в этом случае быть? Или наоборот, сотрудник зашел не по карточке (просто охраник открыл турникет через кнопку). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 06:55 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
>> Считыватели начиная с а) до f) - они находятся в Головном офисе. >> Считыватели g) и h) находятся в здании Айша (в другом здании). почему вас надо третий раз спрашивать ГДЕ хранится информация связи ридер-здание ? >> А если там встречаются например сотрудник зашел >> 3 раза подряд и вышел тока после третьего входа. >> Как в этом случае быть? >> Или наоборот, сотрудник зашел не по карточке >> (просто охраник открыл турникет через кнопку).[/quote] Это вопросы к постановщику задачи. Отработайте все возможные варианты на Екселе и создайте список правил вывода информации. 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 14:45 |
|
||
|
Помогите создать запрос sql
|
|||
|---|---|---|---|
|
#18+
javajdbc, Получилось у меня сделать задачу как надо, Большое спасибо тебе javajdbc за советы они помогли мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 18:02 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39202676&tid=1831987]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 495ms |

| 0 / 0 |
