ОБНОВЛЕНИЕ столбцов на основе другой таблицы с использованием внешнего ключа - PullRequest
0 голосов
/ 03 мая 2020

Два стола AVAIL_SCHEDULE и EMPLOYEE_SCHEDULE. Менеджеры вставляют часы на работу в таблицу AVAIL_SCHEDULE. Сотрудники смотрят на доступные часы и выбирают время, которое они хотели бы работать (col Schedule_action: PICK).

Менеджер также может УДАЛИТЬ все расписание.

Что я хочу сделать, так это найти соответствующие часы в расписании сотрудников PICK, на которые повлиял DELETE.

Например:

Таблица: AVAIL_SCHEDULE

enter image description here

Сотрудник поднял 30-минутную смену с 7: 00-7:30 30.01.2020. Затем, позже, менеджер удалил смену. Таким образом, эта 30-минутная смена 5/1 уходит на ВСЕХ сотрудников, которые зарегистрировались. Как я могу запросить все записи PICK, у которых есть DELETE schedule_slot? (Действие DELETE будет 1 ко многим)

Я пытаюсь обновить таблицу employee_schedule, чтобы показать их измененное расписание. Кол. schedule_ID - это внешний ключ в таблице employee_schedule. Это возможно? Столбцы PROGR, DATE_INT, DATE_KEY и SCHEDULE_SLOT одинаковы для действий DELETE и PICK. Любая помощь с благодарностью.

Добавление данных:

CREATE TABLE AVAIL_SCHEDULE
(
    [SCHEDULE_ID] [bigint]  NULL,
    [PROGRAM_NUMBER] [int] NOT NULL,
    [DATE_INTERVAL] [datetime2](7) NULL,
    [DATETIME_KEY] [int] NULL,
    [ACTIVITY] [varchar](50) NOT NULL,
    [COSMOS_SLOT_ID] [varchar](100) NULL
 )

 INSERT INTO AVAIL_SCHEDULE (SCHEDULE_ID, PROGRAM_NUMBER, DATE_INTERVAL, DATETIME_KEY, ACTIVITY, COSMOS_SLOT_ID)
 VALUES (174379, 3254, '2020-05-01 07:15:00', 502494, 'PICK', '2020-05-01_3254_0715_4'),
        (174381, 3254, '2020-05-01 07:00:00', 502493, 'PICK', '2020-05-01_3254_0700_4'),
        (175679, 3254, '2020-05-01 07:15:00', 502494, 'DELETE', '2020-05-01_3254_0715_4'),
        (175690, 3254, '2020-05-01 07:00:00', 502493, 'DELETE', '2020-05-01_3254_0700_4');

1 Ответ

0 голосов
/ 03 мая 2020

Вам может помочь следующий код:

SELECT DISTINCT ASCH.*
FROM AVAIL_SCHEDULE ASCH
     JOIN AVAIL_SCHEDULE ASCH2 ON ASCH.COSMOS_SLOT_ID = ASCH2.COSMOS_SLOT_ID
                                  AND ASCH.ACTIVITY = 'PICK'
                                  AND ASCH2.ACTIVITY = 'DELETE'
WHERE ASCH.ACTIVITY = 'PICK';

db <> fiddle demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...