いくつかの信号が与えられた場合、最小および最大制限が構成されたマシンの状態を調べる必要があります。次の構造(およびサンプルデータ)のテーブルを作成する予定です
| StateID | SignalID | min | max |
|---------|----------|-----|-----|
| 1 | 1 | 1 | 2 |
| 1 | 3 | 2 | 3 |
| 2 | 2 | 0 | 4 |
| 3 | 2 | 5 | 9 |
したがって、有効な行によって可能な状態を見つけることができます (SignalID の値が最小値と最大値の間にあるという意味で)。すべての信号の有効な状態が交差すると、正しい状態になります (テーブルがそのように完成していると仮定します)。しかし、いくつかの状態については、特定の信号に親和性がない可能性があります-最初に状態を反復処理する必要があると思います-どういうわけか非効率的だと思われるもの、または?
上記の表の例 (満たされた場合、SignalValue は最小値と最大値の間にあることを意味します):
- (1,2,3) -> 1 (行 1 と 2 が満たされている) または -> 2 (行 3 が満たされている)
- (2,9,2) -> 1 (行 1 と 2 が満たされている) または -> 3 (行 4 が満たされている)
- (3,1,3) -> 2 (行 3 のみが満たされた)
- (3,8,2) -> 3 (行 4 のみが満たされた)
最初からやり直すには、いくつか質問があります。
- テーブル構造 (またはロジック) を変更して最適化できますか?
- min=-infinity と max=infinity の行をその状態に追加せずに、信号に依存しない状態を処理するにはどうすればよいですか?
- 状態と信号の数は動的であるため、対応するクエリを効率的に行うにはどうすればよいですか? (結果の動的カウントの) 交差を SQL で実行できますか?
アイデアと助けをありがとう。