Autor | Zpráva | ||
---|---|---|---|
Giga Profil * |
#1 · Zasláno: 29. 4. 2009, 12:33:17
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 * |
#3 · Zasláno: 29. 4. 2009, 12:46:39
To je pekna idea.
Ako zrealizovat trigger v MySQL? Este som sa tym nestretol. dik |
||
Kajman_ Profil * |
#4 · Zasláno: 29. 4. 2009, 13:01:45
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 * |
#5 · Zasláno: 29. 4. 2009, 13:03:59
Dakujem!
|
||
Giga Profil * |
#6 · Zasláno: 29. 4. 2009, 16:53:58
Tak, a je to v ...
Provider ma MySQL 4 a trigger je az od verzie 5. :( |
||
Kajman_ Profil * |
#7 · Zasláno: 29. 4. 2009, 17:41:02
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') |
||
Časová prodleva: 15 let
|
0