ZILosoft
@ZILosoft
SysAdmin

Как правильно написать sql запрос?

MySQL 5.7
есть 3 таблицы
INSERT INTO
db.manager_task (
id, title, manager_id, date_create)
VALUES
(1, ' Название задачи', 1, '2019-12-22 11:23:20');
(2, ' Название задачи2', 1, '2019-12-24 11:25:20');
(2, ' Название задачи3', 2, '2019-12-21 11:25:20');


INSERT INTO
db.manager_task_comment
(id, text, manager_id, task_id, date_create)
VALUES
(1, 'Закрыл( задачу', 1, 1, '2019-12-22 11:28:31');
(2, 'Закрыл( задачу', 1, 1, '2019-12-22 11:28:31');
(3, 'Работаю, 1, 1, '2019-12-24 11:28:31');


INSERT INTO
db.manager
(id, surname, name)
VALUES
(1, '', 'Менеджер1');
(2, '', 'Менеджер2');
(3, '', 'Менеджер3');
(4, '', 'Менеджер4');


нужно получить таблицу с менеджерами у которых есть задачи за последние 30 дней
и исключить из нее тех кто отписался хотя бы в одной за последние 24 часа
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
ZILosoft
@ZILosoft Автор вопроса
SysAdmin
Select concat(manager.name," ", manager.surname ) as Ответственный
from manager
where manager.id in (
       #Менеджеры у которых есть незакрытые задачи за последние 30 дней
    SELECT DISTINCT m.manager_id
    FROM manager_task as m
    WHERE m.date_create BETWEEN (now() - INTERVAL 30 DAY) AND (now())
      AND m.date_close is not null
      AND m.manager_id not in (
        #Исключаем менеджеров которые отписались за последние 24 часа
        SELECT DISTINCT manager_task_comment.manager_id
        FROM manager_task_comment
        WHERE manager_task_comment.date_create BETWEEN (now() - INTERVAL 24 HOUR) AND now())


Решил таким образом
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Найти все комментарии, оставленные за 24 часа, получить список ID менеджеров, оставивших эти комментарии и выбрать всех менеджеров, чьи ID не попадают в этот список.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы