私は以下に定義するように3つのテーブルを持つMySQLデータベースを持っています。タイムスタンプに基づくIF付きのMySQL SELECT
Readings: (_id, value, timestamp, sensorId)
Sensor: (_id)
DeviceSensor: (deviceId, sensorId, timestamp)
各Reading
は、データが収集された時のタイムスタンプを有する。 Sensor
はReading
の所有者です。 DeviceSensor
には、関係が開始されたときのタイムスタンプを含むDevice
とSensor
の間の関係が含まれます。
私のアーキテクチャでは、Device
がSensor
とペアになっている場合、Sensor
は前のDevices
を無視します。
私が必要とするのは、すべてのを照会し、それぞれの読み取り時に対応するDevice
と関連付けることです。例:
DeviceSensor = [(1,1,1483527932),(1,2,1507058076)]
Sensor = [(1)]
Readings = [(1,5,1483527932,1),(2,3,1493527932,1),(3,7,1507058076,1)]
このデータを使用すると、クエリは:[(1,5,1483527932,1),(2,3,1493527932,1),(3,7,1507058076,2)]
を返します。つまり、が1483527932
と1507058076
の間にあるReadings
は、1507058076
の後にsensorId = 1
とReadings
を返します。sensorId = 2
を返す必要があります。
DeviceSensorに終了タイムスタンプが必要です。テーブルを変更する可能性はありますか? – MikeAinOz
'Readings'が' sensorId'カラムを持っていれば、これはもっと簡単になります。 –
@MikeAinOz可能ですが、「無」の場合はテーブルサイズを2倍にします。それが唯一の方法であれば、それは実行可能です。 – Minoru