Forum » Programiranje » [mysql] sklic na rezultat
[mysql] sklic na rezultat
lizard14 ::
imam časovno potratno stored funkcijo in SQL klic:
SELECT
ime,
priimek,
(select moja_funkcija()) AS prihodek
FROM zaposleni
kot rezultat sql-a zelim dobiti dodatne kolone, ki v osnovi rabijo klic stored funkcije.
SELECT
ime,
priimek,
(SELECT moja_funkcija()) AS prihodek,
(SELECT moja_funkcija()) * dodatno AS dodatnaKolona
FROM zaposleni
v zgornjem klicu se funkcija vrši 2x.
obstaja rešitev, ki bi funkcijo klicala samo 1x, nekaj v tem smislu...??
SELECT
ime,
priimek,
(SELECT moja_funkcija()) AS prihodek,
prihodek * dodatno AS dodatnaKolona
FROM zaposleni
SELECT
ime,
priimek,
(select moja_funkcija()) AS prihodek
FROM zaposleni
kot rezultat sql-a zelim dobiti dodatne kolone, ki v osnovi rabijo klic stored funkcije.
SELECT
ime,
priimek,
(SELECT moja_funkcija()) AS prihodek,
(SELECT moja_funkcija()) * dodatno AS dodatnaKolona
FROM zaposleni
v zgornjem klicu se funkcija vrši 2x.
obstaja rešitev, ki bi funkcijo klicala samo 1x, nekaj v tem smislu...??
SELECT
ime,
priimek,
(SELECT moja_funkcija()) AS prihodek,
prihodek * dodatno AS dodatnaKolona
FROM zaposleni
McAjvar ::
Poskusi s temporary tabelami, ali pa morda s subselectom, če bo pomagalo. V stilu:
SELECT x.ime, x.priimek, x.prihodek, x.prihodek * 3.14 AS ilikepi FROM (SELECT ime, priimek, (select moja_funkcija()) AS prihodek FROM zaposleni) x
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov
but an exercise in the limiting of privacy."
- Isaac Asimov
technolog ::
Če boš dal stored proceduri v definicijo DETERMINISTIC, potem lahko dvakrat kličeš, računala pa se bo samo enkrat.
http://dev.mysql.com/doc/refman/5.0/en/...
Drugače pa bo kar tole, kar je ajvar napisal, ok. V drugih RDMSjih maš pa konstrukt WITH, s katerim se take stvari res lepo naredijo.
http://bugs.mysql.com/bug.php?id=16244
Thank me later :)
http://dev.mysql.com/doc/refman/5.0/en/...
Drugače pa bo kar tole, kar je ajvar napisal, ok. V drugih RDMSjih maš pa konstrukt WITH, s katerim se take stvari res lepo naredijo.
http://bugs.mysql.com/bug.php?id=16244
Thank me later :)
Zgodovina sprememb…
- spremenil: technolog ()
prtenjam ::
Pozdravljeni,
to najpreprosteje in najčistejše rešite z podrejenimi SELECT stavki:
Lahko pa naredite tudi preprost VIEW, ki ima iste tri kolone kot podrejeni SELECT stavke in potem berete iz VIEW-a; torej povsem enakovredno kot zgoraj
to najpreprosteje in najčistejše rešite z podrejenimi SELECT stavki:
SELECT ime , priimek , fun AS prihodek , fun * dodatno as dodatna kolona FROM ( SELECT ime , priimek , (SELECT moja_funkcija()) AS fun, FROM zaposleni )
Lahko pa naredite tudi preprost VIEW, ki ima iste tri kolone kot podrejeni SELECT stavke in potem berete iz VIEW-a; torej povsem enakovredno kot zgoraj
CREATE VIEW W_ZAPOSLENI AS SELECT ime , priimek , (SELECT moja_funkcija()) AS fun, FROM zaposleni ; SELECT ime , priimek , fun AS prihodek , fun * dodatno as dodatna kolona FROM W_ZAPOSLENI
Matjaž Prtenjak
https://mnet.si
https://mnet.si
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] dvojni klic potratne funkcije?Oddelek: Programiranje | 1067 (696) | prozac |
» | [Java] Evidenca delovnega časa - Java v navezi z AccessomOddelek: Programiranje | 3304 (2524) | c0dehunter |
» | [c++] standardni c++ in dogodki(events)Oddelek: Programiranje | 1770 (1595) | yeti |
» | [VB, Excel] Lociranje celiceOddelek: Programiranje | 1276 (1130) | mmaestro |
» | C++ objektiOddelek: Programiranje | 1765 (1669) | outsider |