MySQL dočasná premenná

Programovacie jazyky, rady, poradňa...
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

MySQL dočasná premenná

Príspevok od používateľa feromakovi »

Ahojte,
rád by som sa spýtal ako riešiť situáciu keď chcem v MySQL robiť nejaký zložitejší výpočet a ten si potom ako keby uložiť do premennej a neskôr to použiť.
príklad:
select round(veľmi zložitý výpočet) as premenna, round(daľší zložitý výpočet * premena) as premenna2 from tabulka

problém je v tom že keď použijem premenna v tom druhom výpočte tak tam to berie ako stĺpec v tabuľke ktorý ale neexistuje a teda mi to hlási chybu.
za rady vopred ďakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: MySQL dočasná premenná

Príspevok od používateľa audiotrack »

osobne by som to asi riešil cez temporary table alebo cez view, ale to záleží od toho čo je myslené tým "veľmi zložitý výpočet"
hwip
Zablokovaný
Zablokovaný
Používateľov profilový obrázok
Príspevky: 306
Registrovaný: 20 mar 2011, 12:03

Re: MySQL dočasná premenná

Príspevok od používateľa hwip »

feromakovi, napis presne co mas a co ti vyhadzuje a poradime ti
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

Re: MySQL dočasná premenná

Príspevok od používateľa feromakovi »

no takže veľmi zožitý výpočet. počítam vzdialenosť medzi dvoma gps bodmi:

round(6378 * 2 * ASIN(SQRT( POWER(SIN((48.7311905 - lat) * pi()/180 / 2), 2) + COS(48.7311905 * pi()/180) * COS(lat * pi()/180) * POWER(SIN((18.2478693 - lon) * pi()/180 / 2), 2) )),2) as distance,

a keď tú samotnú vzdialenosť chcem použiť ešte v inom výpočte konkrétne na náklady cesty autom, ktoré tiež závisia od vzdialoenosti tak to riešim tak že tú vzdialenosť znova počítam:

6378 * 2 * ASIN(SQRT( POWER(SIN((48.7311905 - lat) * pi()/180 / 2), 2) + COS(48.7311905 * pi()/180) * COS(lat * pi()/180) * POWER(SIN((18.2478693 - lon) * pi()/180 / 2), 2) )) * 5 / 50 * diesel + 50 * diesel as naklady

toto mám v jednom selecte. a mojím zámerom je to dostať túto druhú časť do štádia asi takého:
distance *5 / 50 * diesel + 50 * diesel as naklady
toto bude efektívnejšie a bude to aj prehľadnejšie.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: MySQL dočasná premenná

Príspevok od používateľa audiotrack »

no vidíš, tak zo zložitého výpočtu sme sa dostali k tvojmu zlému návrhu. Mysql má dátový typ na prácu so súradnicami: http://dev.mysql.com/doc/refman/5.1/en/ ... sions.html kde máš okrem iného aj pekné funkcie na výpočet vzdialeností medzi nimi
sorien
Medium Expert
Medium Expert
Príspevky: 88
Registrovaný: 02 jún 2011, 21:55

Re: MySQL dočasná premenná

Príspevok od používateľa sorien »

pouzi stored procedures

Kód: Vybrať všetko

http://dev.mysql.com/tech-resources/articles/mysql-storedproc.html
Napísať odpoveď