Как сравнить диапазон дат в двух соединенных таблицах?MySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 Как сравнить диапазон дат в двух соединенных таблицах?

Сообщение Anonymous »

Каждое утро понедельника я извлекаю данные из главной таблицы ( dotable1 ) MySQL V.5.5.62 DB с использованием SQL -запроса, где хранятся ежедневные доступ к каждому зарегистрированному пользователю. 2025-01-01 до 2025-03-09 были извлечены. 2023. < /P>

Код: Выделить всё

+------------+------------+------+
| date1      | date2      | user |
+------------+------------+------+
| 2023-02-08 | 2023-02-12 | Will |
| 2023-07-12 | 2023-07-28 | Will |
| 2021-06-18 | 2021-06-26 | Will |
+------------+------------+------+
В главной таблице Access Master ( dotable1 ) пользователь будет в интервале времени (2023-07-12; 2023-07-28), в котором он был заблокирован, пытался получить доступ к 613 раза

Код: Выделить всё

SELECT
COUNT(*),
`user`,
FROM
`dotable1`
WHERE
`user` = 'Will' AND `blocked` = 'Y' AND access_date BETWEEN '2023-07-12' AND '2023-07-28';

+----------+------+
| COUNT(*) | user |
+----------+------+
|      613 | Will |
+----------+------+
Теперь я должен считать в периоде извлечения из главной таблицы ( dotable1 ), если есть какие-либо пользователи, заблокированные в период, например, для пользователя я должен считать ноль, потому что он не был заблокирован в периоде с 2025-01 до 2025-03-09. был заблокирован три раза с момента его регистрации, один раз в 2021 году и дважды в 2023 году. < /p>

Код: Выделить всё

+------------+------------+------+
| date1      | date2      | user |
+------------+------------+------+
| 2023-02-08 | 2023-02-12 | Will |
| 2023-07-12 | 2023-07-28 | Will |
| 2021-06-18 | 2021-06-26 | Will |
+------------+------------+------+
I tried this solution https://dbfiddle.uk/ApsbQka- (credits @samhita) without success because the start date 2025-01-01 and end date 2025-03-09 are not taken into account for the extraction period and the output is always 4, instead of zero.
I expected this return

Код: Выделить всё

+------------+------------+------+----------+
| date1      | date2      | user | COUNT(*) |
+------------+------------+------+----------+
| 2025-01-01 | 2025-03-09 | Will |    0     |
+------------+------------+------+----------+
< /code>
вместо < /p>
+------------+------------+------+----------+
| date1      | date2      | user | COUNT(*) |
+------------+------------+------+----------+
| 2025-01-01 | 2025-03-09 | Will |    4     |
+------------+------------+------+----------+
update
Мне нужно подсчитать количество строк, хранящихся в dotable1 , которые находятся в диапазоне дат экстракции (2025-01-01, 2025-03-09), хранящиеся в dotable2 для каждого пользователя

Подробнее здесь: https://stackoverflow.com/questions/795 ... ned-tables
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «MySql»