[ pisac @ 29.09.2011. 21:25 ] @
Zanima me da li ovaj postupak može da se izvede drugačije (stručnije), bez privremene tabele, sve u jednoj SQL komandi? Evo objašnjenja: nekoliko temperaturnih senzora su postavljeni jedan pored drugog u sobi, da bi se videla međusobna odstupanja izmerene temperature u nekom periodu, a onda se u tabelu senzora to odstupanje unese kao "korekcija" tako da svi senzori ubuduće pokazuju što sličniju vrednost. Znači, u nekom periodu imamo opšti prosek svih senzora i pojedinačne proseke svakog senzora, a u tabelu senzora na kraju unosimo vrednost korekcije. Nakon toga, uz tu korekciju, svi bi senzori trebalo da pokazuju istu temperaturu. To je inače trebalo odraditi samo za određenu grupu senzora koja nije imala svoje ime, i nalazila se pored senzora koji se zvao 'soba'. Tabele su: Temp2 sadrži polja za senzor(id), vreme, temp(eraturu). Senzor2 sadrži polja za senzor(id), ime, korekcija Citat: CREATE TEMPORARY TABLE `Korekcija` ( `senzor` tinytext NOT NULL, `korekcija` decimal(9,4) NOT NULL ); set @prosek=(select avg(t.temp) from Temp2 t join Senzori2 s on t.senzor=s.senzor where (ime='' or ime='soba') and vreme>'2011-09-28 09:30:00' and vreme<'2011-09-28 17:55:00'); insert into Korekcija select s.senzor,@prosek-avg(t.temp) from Temp2 t join Senzori2 s on t.senzor=s.senzor where (ime='' or ime='soba') and vreme>'2011-09-28 09:30:00' and vreme<'2011-09-28 17:55:00' group by t.senzor; Update Senzori2 join Korekcija on Senzori2.senzor=Korekcija.senzor set Senzori2.korekcija=Korekcija.korekcija where Senzori2.senzor=Korekcija.senzor; Može li ovo da se strpa sve u jednu naredbu? Koristim MySQL. |