У меня проблема с запросом. У меня есть таблица агентов, которые делают вещи. Я отслеживаю то, что они делают, в таблице событий. Я хочу, чтобы мои агенты были заняты, но не слишком заняты, поэтому мне нужен запрос, который вернет мне группу агентов, которые сделали не более 10 событий за последние 10 минут и не более 400 событий за последние 24 часа. И из этого пула доступных агентов я могу выбрать одного, чтобы дать что-то сделать
Итак, моя таблица агентов выглядит примерно так:
Agent table
AgentID. AgentName
1 Bob
2 Sue
Event Table
Event ID. Agent ID. Event Timestamp
1 2 1319525462
2 1 1319525462
3 2 1319525462
Очевидно, что эти таблицы просто для того, чтобы дать форму БД. В общем, что мне нужно и не удалось выяснить, это как выбрать группу операторов из объединения, которое возвращает группу агентов, которые выполнили не более 10 событий за последние 10 минут и не более 400 событий в последние 24 часа Мои реальные таблицы более сложны, но я просто ищу общий принцип о том, как структурировать запрос, который бы дал желаемый результат. Заранее спасибо за помощь!
** UPDATE
основываясь на ответе Бенуа, я придумал это:
SELECT DISTINCT username FROM campaign_agents
LEFT OUTER JOIN (SELECT count(event_index) myevents, field_event_agent_value FROM new_event WHERE field_event_time_value BETWEEN 1320206138 AND 1320292538 GROUP BY field_event_agent_value ) last_24_hours
ON last_24_hours.field_event_agent_value = campaign_agents.username
LEFT OUTER JOIN (SELECT count(event_index) myevents, field_event_agent_value FROM new_event WHERE field_event_time_value BETWEEN 1320291938 AND 1320292538 GROUP BY field_event_agent_value ) last_10_mins
ON last_10_mins.field_event_agent_value = campaign_agents.username
WHERE last_24_hours.myevents < 550 AND last_10_mins.myevents < 10
Но он не получает агентов в таблице campaign_agents, которые еще ничего не сделали и, следовательно, не находятся в таблице событий. Разве LEFT OUTER JOIN не должен включать все в первую таблицу, campaign_agents, даже если нет совпадений со второй таблицей? Нужно ли ставить оператор ИЛИ после того, как их включить?