Yessssssssssss!
Ich glaube mit dem folgenden INSERT ist genau das gewünschte erledigt! Ein Aufruf für alle Intervalle. Boah ist das hübsch!
SQL-Code:
INSERT INTO history (mID, mIntervalID, mDate, mAVG, mMAX, mMIN, mAVGCount)
(
SELECT
:messID as mID,
id AS IntervalID,
FROM_UNIXTIME((UNIX_TIMESTAMP(:messDatum) DIV i.Interval) * i.Interval) AS messDatum,
:messWert AS messWertAVG,
:messWert AS messWertMAX,
:messWert AS messWertMIN,
1 AS mAVGCount
FROM
intervals i
)
ON DUPLICATE KEY UPDATE
mAVG = (mAVG*mAVGCount + :messWert) / (mAVGCount + 1.0),
mMAX = IF(mMAX > :messWert, mMAX, :messWert),
mMin = IF(mMIN < :messWert, mMIN, :messWert),
mAVGCount = mAVGCount + 1;
(Der PK liegt auf mID, mIntervalID, mDate.)
Die Spaltennamen im Sub-Select könnten natürlich entfallen, das habe ich nur für mich beim Ausprobieren gemacht.
Sehr super! Ich danke euch!! Das war Kollaboration wie sie Freude macht
SirRufo's Roter Kasten:
Wie könnte ich das am besten behandeln? Gibt es da entsprechende Funktionen die mir das automatisch ausgleichen könnten?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)