私はクエリの問題があります。私は物事を行うエージェントのテーブルを持っています。彼らがイベントテーブルで行うことを追跡します。私はエージェントを忙しく過ごしたくないので忙しくはないので、私は過去10分間に10イベント以上、過去24時間に400イベント以下を行ったエージェントのグループを私に返すクエリが必要です。そして、私は1つがMySQLのクエリ構築
を行うために何かを与えるように選択することができます利用可能なエージェントのこのプールからだから私のエージェントの表のようなものになります。
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時間私の実際のテーブルはもっと複雑ですが、私は、望みの結果を返すクエリをどのように構造化するかという一般原則を探しています。ヘルプのお時間をありがとうございます!
ブノワのanswereに** 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は、2番目のテーブルに一致するものがなくても、最初のテーブルcampaign_agentsのすべてを含むべきではありませんか?どういうわけかどこかに入れておけば、後に置く必要がありますか?
おかげで私はそれを試してみるとバックレポートします! – vaene
ありがとうございました。私はそれを変更するだけでもっと勉強しています。私はあなたのスクリプトのための新しいクエリの基礎として提供したクエリを使用し、しばらくの間うまくいってから停止しました。問題は、エージェントのリストが長くて、特にキャンペーンの初めにすべてのエージェントがイベントに関連付けられているわけではないということです。まだ何もしていない代理人はどうやって手に入れますか?私はイベント・テーブルにそれらを「テスト」イベントとして追加してみて、それが今のところ運ばれていないかどうかを確認しようとしました。 – vaene