ugrás a tartalomhoz

Archívum - Dec 11, 2014 - Fórum téma

SELECT sub PREPARE

vtsoftware · 2014. Dec. 11. (Cs), 13.43
Sziasztok!

Van egy feladatom, ahol matematikai műveleteket kell végrehajtanom, soronként mást, de az adatok forrása ugyan az.

Pl.:
---
id | keplet | x | y | z | eredmény
0 | (z*x) | 2 | 0.5 | 10 | 20
1 | (y-x) | 3 | 5 | 2 | 2
---
Az eredmény-t nem tudom hogy milyen lekéréssel lehetne kiszámolni.
A gond annyi, hogy lehet a képlet bármi, nem csak ilyen egyszerűek.
Az is lehet, hogy nem csak képletet tartalmaz, lehet sql parancs is.
Sőt, utóbbi jobb is lenne...

Ahogy olvasgattam, keresgéltem az EXECUTE látszik kézenfekvőnek.
SELECT
  (
    SET @qry = CONCAT('SELECT ', `math`.`keplet`);
    PREPARE stmt FROM @qry;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
  ) as `eredmeny`
FROM
  `math`
Ezt elmélet gyanánt írtam le, mert egyrészt nem működik, másrészt remélem jól szemlélteti a szándékom :)

Ugyanakkor magában a következő kód működik:
SET @qry = CONCAT('SELECT ', '(5*4)');
PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
PHP-ben is elvégezhetném a számolást, de úgy gondolom a MySQL gyorsabban számolna esetemben mint a PHP... meg egyébként is.
A lényeg, hogy utóbbit kellene minden soron végrehajtani.
Valakinek volna ötlete, megoldása erre?

Nagyon köszönöm