LINUX.ORG.RU
ФорумAdmin

Анализ данных с целью определения вхождения в интервалы

 ,


0

2

В базе описаны события, которые произойдут между timestamp date0 и date2:

mysql> SELECT * FROM event;
+----+----------+---------------------+---------------------+
| id | title    | date0               | date2               |
+----+----------+---------------------+---------------------+
|  1 | Событие1 | 2012-11-20 11:27:12 | 2012-11-20 11:26:26 |
|  2 | Событие2 | 2012-11-20 11:33:47 | 0000-00-00 00:00:00 |
+----+----------+---------------------+---------------------+
У событий возможны следующие оценки:

  • 0 - Событие еще не наступило;
  • 1 - Событие происходит в данный момент;
  • 2 - Событие в прошлом;

Можно ли составить запрос, что бы проставить оценки событий в таблице:

mysql> SELECT * FROM evaluation;
+----+------------+
| id | evaluation |
+----+------------+
|  1 | ?          |
|  2 | ?          |
+----+------------+

★★★★★

Попробуй сделать в 3 запроса UPDATE evaluation SET evaluation=1 WHERE id IN ( SELECT `id` FROM event WHERE date0 < NOW() and date1 > NOW() )

Запрос можно модифицировать, чтобы не IN, а EXISTS. ЕМНИП, с EXISTS быстрее.

helios ★★★★★
()
SELECT id,
CASE 
   WHEN NOW()>=date0 AND NOW()<=date2 THEN
      1
   ELSE
      CASE WHEN NOW()<date0 THEN 
         0
      ELSE 
         CASE WHEN NOW()>date2 THEN
            2
         ELSE
            NULL
         END
      END
    END AS State
FROM event
[/sql]
bvn13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.