Databáze > MySQL

Create Procedure - výpočet polynomu

(1/3) > >>

hlucheucho:
Ahoj

nedaří se mi přijít na to, jak realizovat výpočet. Pomocí

SELECT a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 FROM termoclanky WHERE (Typ = TcType AND Vmin <= Voltage AND Vmax >= Voltage);

získávám koeficienty z tabulky temoclanky potřebné pro výpočet teploty z naměřeného napětí. Samotný výpočet má vypadat takto:

teplota = a11 * voltage^11 + a10 * voltage ^10 + ..... + a1 * voltage + a0

zatím jsem přišel na toto:

create procedure nejak(IN Voltage float, OUT Teplota float)
begin
  set Teplota = 3 * Voltage;
end

Jak udělat výpočet, který získá koeficienty z tabulky pomocí SELECT?

Tuto teplotu chci pak vkládat do tabulky teplot, každé zařízení má svou.
MySQL ver. 5.6.11

hu

Mi.Chal.:
Tak si dej ten select do procedury a načti do proměnných, viz select into v

https://dev.mysql.com/doc/refman/5.0/en/select-into.html

hlucheucho:
V C++ aplikaci bych měl koeficienty a0 ... a11 v poli a počítal to v cyklu po jednotlivých členech od nejnižšího řádu. Stačilo by jen násobení a sčítání. Předpokládám, že by tento postup měl menší nároky na strojový čas.  Pokud jsem správně pochopil, zde pole nejsou.  Je způsob jak výpočet zrychlit? Přepsání polynomu do SQL asi nebude optimální...

hu

pf1957:
Ja z tveho dotazu nechapu, jestli to chces pocitac na strane Sql serveru nebo Delphi Clienta

Ondřej Pokorný:
Pro tvůj účel je nejlepší si napsat vlastní funkci pro MySQL v C:

http://dev.mysql.com/doc/refman/5.1/en/adding-udf.html
http://www.codeproject.com/Articles/15643/MySQL-User-Defined-Functions

+ Já jsem si podobně napsal vlastní rozšíření MySQL i v Delphi.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi