Ich habe hier einen schon etwas längeren Abfragecode.
Es gibt bis jetzt drei Messgeräte und jedes Geraet hat zwei Messwerte.
In einer Tabelle geraete sind die Geraete definiert:
GeraetID, Bezeichnung, Messwert1Bezeichnung, Messwert2Bezeichnung
Kommen jetzt weitere Geräte hinzu, dann kann ich sie einfach in dieser Tabelle einfügen.
Jetzt geht es mir darum, wie ich die MySQL-Abfrage generiere.
Ich bin jetzt am Überlegen, wie ich die lange SQL-Abfrage automatisch erzeugen könnte.
Wenn ich sie jetzt mit C erstellen würde, dann würde ich zunächst die Tabelle "geraete" einlesen. Mit Schleifenkonstruktionen könnten die dort gelesenen Werte in den Spalten mit Stringbefehlen erzeugen und dann den Abfragebefehl an den SQL-Server senden.
Es ist aber bestimmt auch möglich, dass der MySQL-Server automatisch den langen Befehl erzeugt, in dem er die Tabelle "geraete" liest und dann damit den Report erzeugt. Was ist geschickter? Ist es überhaupt möglich, einen Namen, den ich mit AS setze - z.B.
p1.mw1 as mw1_1
dass der Name mw1_1 aus der Tabelle "geraete" gelesen wird?
Es gibt bis jetzt drei Messgeräte und jedes Geraet hat zwei Messwerte.
Code:
DROP TABLE IF EXISTS excel_report1;
CREATE TABLE excel_report1
SELECT
p1.zeit,
p1.mw1 as mw1_1,
p1.mw2 as mw1_2,
p2.mw1 as mw2_1,
p2.mw2 as mw2_2,
p3.mw1 as mw3_1,
p3.mw2 as mw3_2,
p1.mw1-diff_p1.mw1 as d_mw1_1,
p1.mw2-diff_p1.mw2 as d_mw1_2,
p2.mw1-diff_p2.mw1 as d_mw2_1,
p2.mw2-diff_p2.mw2 as d_mw2_2,
p3.mw1-diff_p3.mw1 as d_mw3_1,
p3.mw2-diff_p3.mw2 as d_mw3_2
FROM messungen p1
INNER JOIN messungen p2 on p1.zeit=p2.zeit
INNER JOIN messungen p3 on p1.zeit=p3.zeit
INNER JOIN messungen diff_p1 on diff_p1.zeit = p1.zeit-300
INNER JOIN messungen diff_p2 on diff_p2.zeit = p2.zeit-300
INNER JOIN messungen diff_p3 on diff_p3.zeit = p3.zeit-300
WHERE
p1.geraet = 0 AND
p2.geraet = 1 AND
p3.geraet = 2 AND
diff_p1.geraet = 0 AND
diff_p2.geraet = 1 AND
diff_p3.geraet = 2 AND
p1.zeit>1395881400;
In einer Tabelle geraete sind die Geraete definiert:
GeraetID, Bezeichnung, Messwert1Bezeichnung, Messwert2Bezeichnung
Kommen jetzt weitere Geräte hinzu, dann kann ich sie einfach in dieser Tabelle einfügen.
Jetzt geht es mir darum, wie ich die MySQL-Abfrage generiere.
Ich bin jetzt am Überlegen, wie ich die lange SQL-Abfrage automatisch erzeugen könnte.
Wenn ich sie jetzt mit C erstellen würde, dann würde ich zunächst die Tabelle "geraete" einlesen. Mit Schleifenkonstruktionen könnten die dort gelesenen Werte in den Spalten mit Stringbefehlen erzeugen und dann den Abfragebefehl an den SQL-Server senden.
Es ist aber bestimmt auch möglich, dass der MySQL-Server automatisch den langen Befehl erzeugt, in dem er die Tabelle "geraete" liest und dann damit den Report erzeugt. Was ist geschickter? Ist es überhaupt möglich, einen Namen, den ich mit AS setze - z.B.
p1.mw1 as mw1_1
dass der Name mw1_1 aus der Tabelle "geraete" gelesen wird?