Pereiti prie turinio

mysql procedūrų naudojimas.


Rekomenduojami pranešimai

turiu tokią problemėlę :) turiu lentelę su trimis stulpeliais

 

KODAS 1111 3245 2454

REIKŠMĖ ? ? ?

FUNKCIJA

SELECT(SELECT SUM(SR) FROM LNT WHERE TIPAS=2 AND ERDVE='A1')+(SELECT SUM(SR) FROM LNT2...)

SELECT(SELECT SUM(SR) FROM LNT WHERE TIPAS=2 AND ERDVE='AG')+(SELECT SUM(SR) FROM LNT2...)

SELECT(SELECT SUM(SR) FROM LNT WHERE TIPAS=3 AND ERDVE='BE')+(SELECT SUM(SR) FROM LNT2...)

(čia turėtų būti stulpeliai kodas reikšmė funkcija)

kiekvienas kodas apsiskaičiuoja pagal tam tikrą tik jai skirtą funkciją ir atsakymas turėtų būti nurodytas antrame reikšmės stulpelyje. tų kodų yra kintantis skaičius, jų gali būti virš tūkst ir pan, tai reikia man padaryti taip, kad visi kodai būtų apskaičiuoti vienu metu ir visos reikšmės patektų į lentelę. norėjau tik kokio patarimo, kuris užvestų ant kelio.

Redagavo grikis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

turiu jau tokią užklausą :

DELIMITER $$

DROP PROCEDURE IF EXISTS `TESTO` $$

CREATE PROCEDURE `TESTO`()

BEGIN

DECLARE i INT DEFAULT 0;

DECLARE KIEKIS INT DEFAULT 0;

SET KIEKIS=(SELECT COUNT(KODAS) FROM ISSS_SR I);

WHILE i<KIEKIS DO

PREPARE uzklausa FROM 'SELECT KODAS, RF FROM ISSS_SR LIMIT ?, 1 into @KODAS_1, @FORMULE';

SET @a = i;

EXECUTE uzklausa using @a;

PREPARE uzklausa3 FROM 'UPDATE ISSS_SR SET SR=@FORMULE WHERE KODAS=@KODAS_1';

EXECUTE uzklausa3;

SET i=i+1;

DEALLOCATE PREPARE uzklausa;

DEALLOCATE PREPARE uzklausa3;

END WHILE;

END $$

DELIMITER ;

 

Man reikia gauti "SR". "@FORMULE" yra užklausa :

SELECT(SELECT

SUM(SR) FROM ISSS_ATASKAITA

WHERE DUOM_TIPAS=2 AND STRAIPSNIS = 292 AND SEKTORIUS= 'S1312' AND PRIEMONE='F7') + (SELECT

SUM(SR) FROM ISSS_ATASKAITA_F06

WHERE DUOM_TIPAS=2 AND STRAIPSNIS = 3040 AND SEKTORIUS= 'S1314' AND PRIEMONE='F99')

 

Kiekvienam kodui yra skirtinga ši užklausa. Dabar su tokia užklausa man į SR stulpelį įrašo ne @FORMULE atsakymą, o tiesiog pačias formules.

Šiaip pats ciklas veikia gerai, kiekvienam kodui priskiria skirtingas formules. Kai parašau sr=@formule aš kaip ir nenurodau, kad reikia pirma įvykdyt skaičiavimą, tai nežinau kaip tą padaryti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...