野球のスコアをユーザーに送信する (例) アプリケーションがあります。使用者は、特定のチームにどのイニングのスコアを送信するかを選択できます (たとえば、「7 イニング後にヤンキーのスコアを送信してください」)。「その他すべて」のチームの設定もあります (例: 「8 イニング後に他のチームのスコアを送信してください」)。
これらの設定は、ユーザー、チーム ID、およびイニング数を格納するテーブルに保存されます。チーム ID '99' は、'その他のすべてのチーム' に使用されます。したがって、ユーザーのレコードは次のようになります。
**User - Team - Innings**
Bob - 13 (Yankees) - 7
Bob - 99 (all other teams) - 8
次に、スコアを確認して通知を送信します。ヤンキースの試合が 7 回終了したことを知り、ボブにメッセージを送信します。
その20分後、同じヤンキースの試合が8回まで進んだ。ボブは 7 イニング後にメッセージを受け取ったので、今回はメッセージを受け取るべきではありません。
次にジュリーについて考えてみましょう。
**User - Team - Innings**
Julie - 13 (Yankees) - 8
Julie - 99 (all other teams) - 7
ジュリーは設定を使用して、「8 イニングまで待つ必要があるヤンキースのスコアを除いて、7 イニング後にすべてのスコアを送信してください」と言います。今度は、ヤンキースの試合で 7 イニング後、ジュリーは通知を受け取るべきではありません。
最後に、ダーク。ダークは少し混乱しています:
**User - Team - Innings**
Dirk - 13 (Yankees) - 7
Dirk - 99 (all other teams) - 7
彼の Yankees 設定はかなり冗長ですが、同じ通知を 2 回受信しない限り、問題はありません。
ヤンキースの試合は 7 回を終了したところです。テーブルにクエリを実行し、誰がアラートを受け取る必要があるかを判断する最良の方法は何ですか?
私はSQLにかなり慣れていませんが、平易な表現を作成できると思います:
アラートの送信先:
< X イニング後にすべてのチームを気にしない限り、X イニング後にチーム A チームを気にする人 (彼らはすでにアラートを受け取っているはずです)
プラス
< X イニング後にチーム A も気にしない限り、X イニング後にすべてのチームを気にする人 (彼らはすでにアラートを受け取っているはずです)
(これが実際にダークのシナリオをカバーしているとは思いませんか?)
私の最善の推測では、チームとイニングに一致する WHERE 句を作成する必要がありますが、上記の基準を満たす同じユーザーの同じテーブルにレコードがあるかどうかもテストします。
これは私をはるかに超えています-Googleでどのテクニックを使用するかさえわかりません。まともな質問のタイトルすら思いつきませんでした:/