basitsar Ответов: 3

Проверка запроса в SQL


У меня есть таблица под названием посещаемость


Atn_No инт
Дата Atn_Date
Atn_EmpNo тип varchar


У меня есть еще одна таблица под названием Операция

Opn_No инт
OPn_StartDate дата
Opn_EndDate дата
Opn_Activity тип varchar
Opn_ActivityHour инт

То, что я хочу проверить с помощью операции с помощью даты начала и окончания, кто из сотрудников работал над этой операцией

Ниже приведены данные операционной таблицы

Opn_StartDate      Opn_EndDate           Opn_Activity         Opn_ActivityHour
01-01-2016         03-01-2016            ABC                      1
04-01-2016         06-01-2016            XYZ                      2
07-01-2016         08-01-2016            lmn                      4




Ниже приведены данные таблицы посещаемости


Atn_No            Atn_Date           Atn_EmpNo
Atn-1             02-01-2016          A-1
Atn-2             02-01-2016          A-2
Atn_3             05-01-2016          A-3



Спасибо
Басит.

Что я уже пробовал:

То, что я думал создать таблицу temporay сначала сохраните все записи операций с помощью таблицы temporay и с помощью while loop add проверьте посещаемость, если посещаемость между начальной и конечной датой сохранит эти записи. но я ищу sql-запрос, если easiy, то нет необходимости создавать этот метод.

3 Ответов

Рейтинг:
2

Member 12696609

Таблица 1

Opn_StartDate Opn_EndDate Opn_Activity Opn_ActivityHour Atn_EmpNo(внешний ключ)

Таблица 2

Atn_No Atn_Date Atn_EmpNo(первичный ключ)




теперь просто используйте join, и вы получите свой ответ.


basitsar

Дорогой, нет никакой связи между таблицей thoes, нужно только проверить start &endDate с операционной таблицей и проверить таблицу посещаемости, если сотрудник находится между start &endDate, а затем показать эту таблицу.

Спасибо
Басит.

Рейтинг:
0

Ben J. Boyle

Предположим, что у вас нет двух операций с перекрывающимися датами, попробуйте сделать это:

Select * 
 from operation o
 left outer join Attendance a on a.atn_date >= o.opn_startdate and a.atn_date <= o.opn_enddate



Если у вас есть перекрывающиеся операции, то вам нужно будет поместить что-то в свою базу данных, чтобы связать эти две записи.


Maciej Los

5ед!