我有一个(示例)应用程序向用户发送棒球比分。用户可以选择应该为某些特定球队发送哪一局的比分(例如,'在 7 局后向我发送洋基队的比分)。还有一个用于“所有其他”球队的设置(例如,“在 8 局后将任何其他球队的得分发送给我)。
这些设置被保存到存储用户、球队 ID 和局数的表格中。团队 ID“99”用于“所有其他团队”。所以我们用户的记录看起来像:
**User - Team - Innings**
Bob - 13 (Yankees) - 7
Bob - 99 (all other teams) - 8
现在是时候检查分数并发送一些通知了。我发现洋基队的比赛已经到了第 7 局的尾声,并向 Bob 发送了一条消息。
20 分钟后,同一场洋基队的比赛已经打到第 8 局。Bob 这次不应该收到消息,因为他在 7 局后收到了消息。
现在考虑朱莉:
**User - Team - Innings**
Julie - 13 (Yankees) - 8
Julie - 99 (all other teams) - 7
Julie 使用设置说“将 7 局后的所有得分发送给我,除了洋基队的得分应该等到 8 局”。这一次,在洋基队比赛的 7 局之后,朱莉应该不会收到通知。
最后,德克。德克有些疑惑:
**User - Team - Innings**
Dirk - 13 (Yankees) - 7
Dirk - 99 (all other teams) - 7
他的洋基队设置是相当多余的,但无论如何——只要他没有两次收到相同的通知,他就没事。
洋基队的比赛刚刚打完第7局。查询我的表并决定谁需要获取警报的最佳方式是什么?
我对 SQL 相当陌生,但我认为我可以进行简单的语言表示:
发送警报至:
任何在 X 局后关心 A 队的人,除非他们在 < X 局后也关心所有球队(他们已经收到警报)
加
任何在 X 局后关心所有球队的人,除非他们在 < X 局后也关心 A 队(他们已经收到警报)
(我不认为这实际上涵盖了德克的场景?)
我最好的猜测是,我需要创建一个匹配球队和局数的 WHERE 子句,然后还要测试同一个表中是否有符合上述条件的同一用户的记录。
这超出了我的范围 - 我什至不知道谷歌有什么技术。我什至想不出一个像样的问题标题:/