У меня есть одна таблица, содержащая «сеансы пользователя», а другая - для указания нарушений в системе.Одним из возможных нарушений является то, что пользователь вошел в систему более 12 часов подряд.
Таблицы приведены ниже:
notification:
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| host_id | int(11) | NO | MUL | NULL | |
| alert_id | int(11) | NO | MUL | NULL | |
| event_start | datetime | NO | | NULL | |
| time_noticed | datetime | NO | | NULL | |
| info | varchar(45) | YES | | NULL | |
| seen | int(11) | NO | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
login:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(45) | NO | | NULL | |
| host_id | int(11) | NO | MUL | NULL | |
| start | datetime | NO | | NULL | |
| end | datetime | NO | | NULL | |
| last | int(11) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
Условия, которые я хочу получить для таблицы результатов:
login.last = 1, login.host_id = X, end> start + 12hours
и чтобы убедиться, что я не сообщал об этом ранее:
login.host_id! =tification.host_id ,tification.alert_id! =Да, login.start! = Notification.event_start, login.username! = Notification.info
(другими словами, я не хочу получать другой отчет того же пользователя на том же хосте, совершая то же нарушениекоторый начался одновременно)