Autor Zpráva
Giga
Profil *
Dobry den,

riesim taky problem: do jednej tabulky priebezne ukladam "medzivysledky". Ked je medzivysledkov
urcity pocet, potrebujem sumar tychto medzivysledkov zapisat do inej tabulky jednym riadkom.
Povedzme, ze sledujem teplotu pri urcitom procese. Zaujima ma vyvoj teploty (a zopar dalsich udajov) za posledne 4 hodiny. Data sa snimaju kazdych 5 minut. Kazdych 60 minut potrebujem zapisat maximalnu a minimalnu teplotu a zopar dalsich udajov vypocitanych z nameranych dat.
Mam teda dve tabulky: v jednej je poslednych 48 merani (4 hod po 5 min) a v druhej by boli tie sumare.

Data prichadzaju z procesu nepravidelne (niekedy sa snima kazdych 5 minut, inokedy sa nacita poslednych 10 merani ... ) pravidelny prenos dat nieje mozne a ani potrebne zabezpecovat - nejedna sa o riadenie procesu.

Mate radu, ako spustat spracovanie medzivysledkov tak, aby nevznikali duplicity a aby sa zabranilo zbytocnemu prehladavaniu databaze napr. kazdych 5 minut ?
Kajman_
Profil *
Můžete mít trigger after insert na podrobné tabulce, který vloží či updatuje min a max sloupec v druhé tabulce na řádku pro danou hodinu.
Giga
Profil *
To je pekna idea.
Ako zrealizovat trigger v MySQL? Este som sa tym nestretol.

dik
Kajman_
Profil *
Např. http://www.linuxsoft.cz/article.php?id_article=1019 a následující článek. Článků je v češtině víc, stačí si je vyhledat.
Giga
Profil *
Dakujem!
Giga
Profil *
Tak, a je to v ...

Provider ma MySQL 4 a trigger je az od verzie 5.

:(
Kajman_
Profil *
Tak si musíte nějak zajistit přepočítání třeba po každé hodině... např. přes cron.

Kouknete do součtové tabulky, kterou hodinu máte poslední a pak stačí něco jako

replace into `souctova_tabulka`
select date_format(`cas`,'%Y-%m-%d %H:00'), min(`hodnota`), max(`hodnota`) from `tabulka`
where `cas`>=date_format('posledniulozenycas','%Y-%m-%d %H:00')
group by date_format(`cas`,'%Y-%m-%d %H:00')

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: