Hallo,
ich bin noch sehr unerfahren mit SQL Datenbanken und habe folgendes vor.
Ich möchte von verschiedenen Baugleichen Sensoren daten erfassen und in eine SQL Tabelle "Measurement" schreiben. ->Das Funktioniert schonmal
Nun möchte ich alle 15 min Die Messdaten abfragen.
Die Sensoren haben zwei ID`s IDB (ID des Verteilerblocks) IDC (ID des Kanals) Beide gehen von 0-7.
Nun Möchte ich, dass in einer anderen Tabelle "ChannelState" eine Zeile für jeden Sensor Angelegt wird, der in den Letzten 15 min Messdaten in der Tabelle Measurement abgelegt hat.BSP
Der Sensor aus Zeile 2ist der einzige im Block und der einzige im Kanal.
Nun ist es so das Manche Sensoren Auf unterschiedlichen Kanälen des Gleichen Verteilerblocks Laufen. Wie Sensor aus Zeile 3 und 4.
manchmal laufen aber auch zwei Sensoren auf dem Block UND dem selben Kanal wie Sensor 3 und 4.
Im falle 5 und 6 Muss hier ein Mittelwert errechnet werden.
Es Müssten in der channel State tabelle also folgende zeilen angelegt werden
Insgesamt ist es eine Zeile Weniger, da 5 und 6 aus der ersten Adresse den Selben Block und den Selben Kanal Repräsentieren.
Nun ist die Frage, wie ich das der Datenbank begreiflich machen kann.
ich hatte überlegt über eine FOR schleife in einer For schleife vorzugehen
FOR (int tIDB=0;tIDB<=7;tIDB++ {
FOR(int tIDC=0;tIDC<=7;tIDC++{
Insert Into ChannelState select *From Measurement where timestamp >now(()-900 IDB=tIDB AND IDC=tIDC;
}//FOR tIDC
}//FOR tIDB
Allerdings werden dann alle zeilen der Letzten 15 minuten einbezogen.
Wie kann ich die anzahl der Zeilen Eingrenzen?
ich bin noch sehr unerfahren mit SQL Datenbanken und habe folgendes vor.
Ich möchte von verschiedenen Baugleichen Sensoren daten erfassen und in eine SQL Tabelle "Measurement" schreiben. ->Das Funktioniert schonmal
Nun möchte ich alle 15 min Die Messdaten abfragen.
Die Sensoren haben zwei ID`s IDB (ID des Verteilerblocks) IDC (ID des Kanals) Beide gehen von 0-7.
Nun Möchte ich, dass in einer anderen Tabelle "ChannelState" eine Zeile für jeden Sensor Angelegt wird, der in den Letzten 15 min Messdaten in der Tabelle Measurement abgelegt hat.BSP
IDB | IDC | VAL1 | VAL2 |
0 | 0 | 12 | 250 |
1 | 1 | 13 | 320 |
1 | 2 | 15 | 230 |
2 | 1 | 22 | 456 |
2 | 1 | 12 | 845 |
Der Sensor aus Zeile 2ist der einzige im Block und der einzige im Kanal.
Nun ist es so das Manche Sensoren Auf unterschiedlichen Kanälen des Gleichen Verteilerblocks Laufen. Wie Sensor aus Zeile 3 und 4.
manchmal laufen aber auch zwei Sensoren auf dem Block UND dem selben Kanal wie Sensor 3 und 4.
Im falle 5 und 6 Muss hier ein Mittelwert errechnet werden.
Es Müssten in der channel State tabelle also folgende zeilen angelegt werden
IDB | IDC | VAL1 | VAL2 |
0 | 0 | 12 | 250 |
1 | 1 | 13 | 320 |
1 | 2 | 15 | 230 |
2 | 1 | 22 | 456 |
Insgesamt ist es eine Zeile Weniger, da 5 und 6 aus der ersten Adresse den Selben Block und den Selben Kanal Repräsentieren.
Nun ist die Frage, wie ich das der Datenbank begreiflich machen kann.
ich hatte überlegt über eine FOR schleife in einer For schleife vorzugehen
FOR (int tIDB=0;tIDB<=7;tIDB++ {
FOR(int tIDC=0;tIDC<=7;tIDC++{
Insert Into ChannelState select *From Measurement where timestamp >now(()-900 IDB=tIDB AND IDC=tIDC;
}//FOR tIDC
}//FOR tIDB
Allerdings werden dann alle zeilen der Letzten 15 minuten einbezogen.
Wie kann ich die anzahl der Zeilen Eingrenzen?