Я пытаюсь найти хороший способ найти все события типа A, которые происходят одновременно между типами событий B и C.
Кроме того, события B и C должны иметь общий идентификатор процесса.
Каждая группа process_id будет иметь одно событие B и одно событие C.
Структура таблицы выглядит следующим образом:
CREATE TABLE IF NOT EXISTS `eventlog` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`time` datetime NOT NULL,
`process_id` varchar(20) NOT NULL,
`event` varchar(25) DEFAULT NULL,
`data` varchar(45) DEFAULT NULL,
)
Моя попытка выглядела так:
SELECT q3.time, q3.event, q3.process_id, q3.data
FROM `eventlog` as q1, `eventlog` as q2, `eventlog` as q3
WHERE q1.process_id=q2.process_id AND q1.process_id=q3.process_id
AND q1.event='EVENTB' AND q2.event='EVENTC' AND q3.event='EVENTA'
AND q3.time BETWEEN q1.time AND q2.time
Когда я запускаю это, оно зависает. Есть мысли о более эффективном или фиксированном способе сделать это?
Спасибо!