ďťż
 
wynik podzapytania jako zmienna - postgresql ďťż
 
wynik podzapytania jako zmienna - postgresql
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

wynik podzapytania jako zmienna - postgresql



andycom - 23-05-2006 00:24
wynik podzapytania jako zmienna - postgresql
  witam,
mam sobie procedurkę a w niej fragmencik:

DECLARE
...
BEGIN
...
(SELECT sum(bk.num_kwota) AS sum FROM tb_budzet_kasa bk WHERE

k.str_rodzaj::text = 'plan'::text AND int_strona=1 AND (bk.id_item IN (Select

tid.id from tempid tid))) AS plan,
(SELECT sum(bk.num_kwota) AS sum FROM tb_budzet_kasa bk WHERE bk.id_zlecenie
is not null AND (bk.id_item IN (Select tid.id from tempid tid))) AS zlecenia,
...
END;

takich wyliczen sumy jest kika dla jednego zapytania i teraz chcialbym zamiast
wykonywac w kazdym wyliczeniu podzapytanie (Select tid.id from tempid tid) -
wykonac je raz - jego wynik przypisac do zmiennej, którą mogłbym potem
wprowadzic do wyliczeń sumy w miejsce obecnie wykonywanego podzapytania (Select
tid.id from tempid tid) czy istnieje tak mozliwosc - jesli tak to w jaki sposób
mozna to zrobić ... ???

dziekuje ze wszelkie podopowiedzi
pozdrawiam
andrzej

--
============= P o l N E W S ==============
archiwum i przeszukiwanie newsów
http://www.polnews.pl





Piotr 'piter' Hlawski - 23-05-2006 00:25

  andycom wrote:

> (Select
> tid.id from tempid tid) czy istnieje tak mozliwosc - jesli tak to w jaki
> sposób mozna to zrobić ... ???

DECLARE
twoj_wynik numeric(5,2); -- czy jakikolwiek typ który cię satysfakcjonune
BEGIN
Select tid.id from tempid tid INTO twoj_wynik
.....
END;

w twoj_wynik masz to co chcesz.

Tak btw. to są podstawy pl/pgsql :)

--
..:: Piter // phlawski$gmail,com // gg: 4534287 ::.
Chuck Norris ostatnio zapisał się na lekcje karate dla początkujących, żeby
móc "przypadkowo" spuścić manto małym dzieciom




andycom - 23-05-2006 00:25

  >andycom wrote:
>
>> (Select
>> tid.id from tempid tid) czy istnieje tak mozliwosc - jesli tak to w jaki
>> sposób mozna to zrobić ... ???
>
>DECLARE
>twoj_wynik numeric(5,2); -- czy jakikolwiek typ który cię satysfakcjonune
>BEGIN
>Select tid.id from tempid tid INTO twoj_wynik
>.....
>END;
>
>w twoj_wynik masz to co chcesz.

dzieki za wskazówke ale to juz testowalem i to sie nie sprawdza - idac Twoim
tropem:

zalózmy ze Select tid.id from tempid zwraca 4 rekordy o wartosci np: 10,2,12,15
teraz korzystajac z podopowiedzi do twoj_wynik zostaje przypisana wartos 10 a
nie wartosc skalarna 10,2,12,15 co powoduje ze w zapytaniu w ktorym wyliczam
sume brany jest pod uwagę tylko rekord o wartosci 10 a nie rekordy 10,2,12,15 -
mi chodzi raczej jak wynik zapytania (Select tid.id from tempid tid) zapisac do
zmiennej i potem przaza do zapytania select sum(kwota) where id in
(twoj_wynik) ale zeby twoj_wynik nie zawieral tylko wartosci 10 ale 10,2,13,15
... czyli to co zwraca podzapytanie w zapytaniu select sum(kwota) where id in
(Select tid.id from tempid) ... ??

>Tak btw. to są podstawy pl/pgsql :)

kurcze - tego juz chyba nie ma w podstawaach a moze sie myle ... :):)

--
============= P o l N E W S ==============
archiwum i przeszukiwanie newsów
http://www.polnews.pl




hubert depesz lubaczewski - 23-05-2006 00:25

  andycom wrote:
> dzieki za wskazówke ale to juz testowalem i to sie nie sprawdza - idac
> Twoim tropem:
> zalózmy ze Select tid.id from tempid zwraca 4 rekordy o wartosci np:
> 10,2,12,15 teraz korzystajac z podopowiedzi do twoj_wynik zostaje

to jest operator przypisania. operator przypisania bierze jedna wartosc i
przypisuje ja do zmiennej.
zrob sobie select sum(costam) into zmienna from ...
i masz sume
to co potrzebuejsz to polaczenie wielu stringow w jeden. bylo o tym w
zeszlym tygodniu na tej grupie.

depesz

--
http://www.depesz.com/ - nowy, lepszy depesz





andycom - 24-05-2006 00:17

  >andycom wrote:
>> dzieki za wskazówke ale to juz testowalem i to sie nie sprawdza - idac
>> Twoim tropem:
>> zalózmy ze Select tid.id from tempid zwraca 4 rekordy o wartosci np:
>> 10,2,12,15 teraz korzystajac z podopowiedzi do twoj_wynik zostaje
>
>to jest operator przypisania. operator przypisania bierze jedna wartosc i
>przypisuje ja do zmiennej.
>zrob sobie select sum(costam) into zmienna from ...
>i masz sume
>to co potrzebuejsz to polaczenie wielu stringow w jeden. bylo o tym w
>zeszlym tygodniu na tej grupie.

dzieki za podpowiedz - rzecz jednak nie w tym - wiem jak wyciagnac sume -
problem polega na tym ze takich sum musze wyciagnac 10 a dla kazdego takieg
zapytania warunkiem jest miedzy innymi takie samo podzapytanie i teraz chca ta
przyspieszyc chcialem wykonacy wczesniej podzaptyanie i jakos zapisac jego
wynik tak zeby dalej w zapytaniach ktore wylicziaja mi sumy juz nie trzeba bylo
10 razy wykonywac tego samego podzapytania ... polaczenie wyniku podzapytania w
jeden string nic nie pomoze ...
--
============= P o l N E W S ==============
archiwum i przeszukiwanie newsów
http://www.polnews.pl




Piotr 'piter' Hlawski - 24-05-2006 00:17

  andycom wrote:

>>andycom wrote:
>>> dzieki za wskazówke ale to juz testowalem i to sie nie sprawdza - idac
>>> Twoim tropem:
>>> zalózmy ze Select tid.id from tempid zwraca 4 rekordy o wartosci np:
>>> 10,2,12,15 teraz korzystajac z podopowiedzi do twoj_wynik zostaje
>>
>>to jest operator przypisania. operator przypisania bierze jedna wartosc i
>>przypisuje ja do zmiennej.
>>zrob sobie select sum(costam) into zmienna from ...
>>i masz sume
>>to co potrzebuejsz to polaczenie wielu stringow w jeden. bylo o tym w
>>zeszlym tygodniu na tej grupie.
>
> dzieki za podpowiedz - rzecz jednak nie w tym - wiem jak wyciagnac sume -
> problem polega na tym ze takich sum musze wyciagnac 10 a dla kazdego
> takieg zapytania warunkiem jest miedzy innymi takie samo podzapytanie i
> teraz chca ta przyspieszyc chcialem wykonacy wczesniej podzaptyanie i
> jakos zapisac jego wynik tak zeby dalej w zapytaniach ktore wylicziaja mi
> sumy juz nie trzeba bylo 10 razy wykonywac tego samego podzapytania ...
> polaczenie wyniku podzapytania w jeden string nic nie pomoze ...

Jednak nie doczytałeś tego wątku o którym wspomniał depesz. Da się zrobić to
co byś chciał. Pozwolisz, że wkleję Twój kawałek postu:

> mi chodzi raczej jak wynik zapytania (Select tid.id from tempid tid)
zapisac do
> *zmiennej i potem przaza do zapytania select sum(kwota) where id in
> (twoj_wynik) ale zeby twoj_wynik nie zawieral tylko wartosci 10 ale
10,2,13,15
> *... czyli to co zwraca podzapytanie w zapytaniu select sum(kwota) where
id in
> (Select tid.id from tempid) ... ??
>

I teraz:

DECLARE
tempid_wynik int4[];
BEGIN
SELECT array(SELECT tid.id FROM tempid) INTO tempid_wynik;
.......
SELECT sum(kwota) WHERE id = any(tempid_wynik);

Powinno zadziałać.

--
..:: Piter // phlawski$gmail,com // gg: 4534287 ::.
Dwa razy do roku Chuck Norris zmusza swoje serce do zawału. Tym sposobem
oszukuje świat i wszyscy myślą, że jest człowiekiem.




hubert depesz lubaczewski - 24-05-2006 00:17

  andycom wrote:
> polaczenie wyniku podzapytania w jeden string nic nie pomoze ...

jak napiszesz jeszcze raz czego potrzebujesz. mozliwie krotkimi i prostymi
zdaniami. z przykladem ktory nie jest czyms innym niz to czego
potrzebujesz. to wtedy moze ktos ci pomoze.

depesz

--
http://www.depesz.com/ - nowy, lepszy depesz




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 24-05-2006 00:17

  Piotr 'piter' Hlawski wrote:
> andycom wrote:
>
>>dzieki za podpowiedz - rzecz jednak nie w tym - wiem jak wyciagnac sume -
>>problem polega na tym ze takich sum musze wyciagnac 10 a dla kazdego
>>takieg zapytania warunkiem jest miedzy innymi takie samo podzapytanie i
>>teraz chca ta przyspieszyc chcialem wykonacy wczesniej podzaptyanie i
>>jakos zapisac jego wynik tak zeby dalej w zapytaniach ktore wylicziaja mi
>>sumy juz nie trzeba bylo 10 razy wykonywac tego samego podzapytania ...
>>polaczenie wyniku podzapytania w jeden string nic nie pomoze ...
>
> Jednak nie doczytałeś tego wątku o którym wspomniał depesz. Da się zrobić to
> co byś chciał. Pozwolisz, że wkleję Twój kawałek postu:
>
>>mi chodzi raczej jak wynik zapytania (Select tid.id from tempid tid)
>>zapisac do
>> zmiennej i potem przaza do zapytania select sum(kwota) where id in
>>(twoj_wynik) ale zeby twoj_wynik nie zawieral tylko wartosci 10 ale
>> 10,2,13,15
>> ... czyli to co zwraca podzapytanie w zapytaniu select sum(kwota) where
>> id in
>>(Select tid.id from tempid) ... ??
>
> I teraz:
>
> DECLARE
> tempid_wynik int4[];
> BEGIN
> SELECT array(SELECT tid.id FROM tempid) INTO tempid_wynik;
> ......
> SELECT sum(kwota) WHERE id = any(tempid_wynik);

A jak tych id jest dużo, to może być warto użyć tabeli tymczasowej. :)

--
P.M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= =?ISO-8859-2?Q?[psql]_Polskie_t=B3umaczenie_?= =?ISO-8859-2?Q?licencji_BSD_dla_PostgreSQL=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • wawa19wwa91.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com