@eternalfire

Как составить запрос по двум датам и по двум полям?

Есть две таблицы:

users

+----+-------+
| id | name  |
+----+-------+
| 1  | user1 |
+----+-------+
| 2  | user2 |
+----+-------+
| 3  | user3 |
+----+-------+

projects

+----+-----------------------------------+
| id | user_id | begin_date | end_date   |
+----+-----------------------------------+
| 1  | 1       | 2019-01-01 | 2019-02-01 |
+----+-----------------------------------+
| 2  | 1       | 2019-03-01 | 2019-03-10 |
+----+-----------------------------------+
| 3  | 2       | 2019-01-01 | 2019-02-01 |
+----+-----------------------------------+
| 4  | 2       | 2019-05-01 | 2019-05-02 |
+----+-----------------------------------+

Как написать выборку, чтобы получить id пользователей у которых, project.begin_date равняется текущей дате
и за последний месяц (текущая дата минус 30 дней) у них не было записей с begin_date и end_date в этом диапазоне?
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
TheRonCronix
@TheRonCronix
select user_id
from projects as p
where p.begin_date = current_date
  and not exists
  (
    select 1 
    from projects p2
    where p.begin_date - 30 <= p2.end_date and p.begin_date >= p2.begin_date
        and p.user_id = p2.user_id
        and p.id <> p2.id
  )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы