[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
sf - 21-05-2006 00:23
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
Witam, Czy jest możliwość, aby kilka rekordów w pojedynczym podzapytaniu można było zapisać jako string?
SELECT *, (SELECT populacja FROM populacja WHERE miastoId = mi.miastoId ORDER BY data) as jakis_string FROM miasta mi WHERE mi.miastoId = 2;
i np. pod jakis_string zapisane by zostały 4 rekordy jako string (np. "10000 12000 13000 21000").
Pozdrawiam, Paweł
-- http://www.hyh.pl
Piotr 'piter' Hlawski - 21-05-2006 00:23
sf wrote:
> Witam, > Czy jest możliwość, aby kilka rekordów w pojedynczym podzapytaniu można > było zapisać jako string? > > SELECT *, > (SELECT populacja > FROM populacja > WHERE miastoId = mi.miastoId > ORDER BY data) as jakis_string > FROM miasta mi > WHERE mi.miastoId = 2; > > i np. pod jakis_string zapisane by zostały 4 rekordy jako string (np. > "10000 12000 13000 21000"). >
da sie, przykładowa tabela: CREATE TABLE "temp" ( id serial NOT NULL, populacja int4, CONSTRAINT temp_pkey PRIMARY KEY (id) ) WITHOUT OIDS;
funkcja:
CREATE OR REPLACE FUNCTION get_as_string() RETURNS text AS $BODY$ DECLARE str text; rec record; BEGIN str = '';
FOR rec IN SELECT populacja FROM temp LOOP str = str||rec.populacja||' '; END LOOP;
RETURN str; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE;
Zapytanie:
SELECT * FROM get_as_string();
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Samochody zostały wymyślone by szybciej uciekać przed Chuckiem Norrisem. Chuck Norris wymyślił wypadek samochodowy.
=?ISO-8859-2?Q?Micha=B3_Zaborowski?= - 21-05-2006 00:23
select array(_tu_podzapytanue_) - i mamy array.
Dalej czytamy: http://www.postgresql.org/docs/8.1/i...ons-array.html gdzie jest opisane array_to_string i jesteśmy w domciu :)
BTW: Po co koledze takie coś? -- Pozdrawiam, Michał Zaborowski (TeXXaS)
hubert depesz lubaczewski - 21-05-2006 00:23
sf wrote:
> Witam, > Czy jest możliwość, aby kilka rekordów w pojedynczym podzapytaniu można > było zapisać jako string? > > SELECT *, > (SELECT populacja > FROM populacja > WHERE miastoId = mi.miastoId > ORDER BY data) as jakis_string > FROM miasta mi > WHERE mi.miastoId = 2; > > i np. pod jakis_string zapisane by zostały 4 rekordy jako string (np. > "10000 12000 13000 21000").
CREATE OR replace function agg_text_sum(txt_before TEXT, txt_new TEXT) RETURNS TEXT AS $BODY$ DECLARE BEGIN IF (txt_before IS NULL) THEN RETURN txt_new; END IF; RETURN txt_before || ' ' || txt_new; END; $BODY$ LANGUAGE 'plpgsql';
CREATE aggregate sum ( basetype = TEXT, sfunc = agg_text_sum, stype = TEXT );
i potem: select sum(populacja::text) from populacja where miastoId = mi.miastoId;
dłuższy tekst o tym wrzuciłem tu: http://www.depesz.com/index.php/2006...ielu-rekordow/
depesz
-- http://www.depesz.com/ - nowy, lepszy depesz
Piotr 'piter' Hlawski - 21-05-2006 00:23
Michał Zaborowski wrote:
> select array(_tu_podzapytanue_) - i mamy array. > > Dalej czytamy: > http://www.postgresql.org/docs/8.1/i...ons-array.html > gdzie jest opisane array_to_string i jesteśmy w domciu :) > > BTW: Po co koledze takie coś?
Wiesz... to jest tak, że można pewne rzeczy zrobić na różne sposoby, ja akurat dałem taki. Działa? działa :) Twój też działa i dobrze...
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Chuck Norris może naładować telefon komórkowy trąc nim o brodę.
=?ISO-8859-2?Q?Micha=B3_Zaborowski?= - 21-05-2006 00:23
Dnia 2006-05-20 15:12, Użytkownik Piotr 'piter' Hlawski napisał: > Michał Zaborowski wrote: > >> select array(_tu_podzapytanue_) - i mamy array. >> >> Dalej czytamy: >> http://www.postgresql.org/docs/8.1/i...ons-array.html >> gdzie jest opisane array_to_string i jesteśmy w domciu :) >> >> BTW: Po co koledze takie coś? > > Wiesz... to jest tak, że można pewne rzeczy zrobić na różne sposoby, ja > akurat dałem taki. Działa? działa :) > Twój też działa i dobrze... > Oj przepraszam, chodziło o to, po co pytającemu takie coś - za daleki skrót myślowy. Ciekaw jestem, bo w wielu przypadkach dociąganie danych jest sporo wolniejsze. Z drugiej strony - czyli od strony klienckiej - trudno jest zorganizować to tak, żeby odpytywanie było pojedynczym zapytaniem. To co mnie interesuje to doświadczenia innych odnośnie wydajności.
-- Pozdrawiam, Michał Zaborowski (TeXXaS)
sf - 22-05-2006 00:02
> Oj przepraszam, chodziło o to, po co pytającemu takie coś - za daleki > skrót myślowy. Ciekaw jestem, bo w wielu przypadkach dociąganie danych > jest sporo wolniejsze. Z drugiej strony - czyli od strony klienckiej - > trudno jest zorganizować to tak, żeby odpytywanie było pojedynczym > zapytaniem. To co mnie interesuje to doświadczenia innych odnośnie > wydajności. >
Dziękuje wszystkim za odpowiedzi.
Co do tego dlaczego w taki sposób chce to zrealizować.. po prostu nie muszę się bawić w aplikacji w grupowanie danych. Czy to wolniejsze? Zapewne, ale w tym przypadku (projekt na własne potrzeby) nie jest to czynnik, który ma dla mnie jakiekolwiek znaczenie.
-- http://www.hyh.pl
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Wstawianie nowego wiersza w przypadku jego braku podczas SELECT w PostgreSQL
[Postgres] jak zastapic brakujaca funkcje regexp_replace w PG wersji 8.0
[postgresql] szukanie po indeksie tsearch'owym wlecze sie - da siejakos przyspieszyc?
[PostgreSQL] Konfiguracja w pg_hba.conf - dziala tylko "trust"
Postgresql - gdzie moge sie nauczyc pisania funkcji i triggerow w
[Postgres]Jak wydobyc czas z serwera bazy przez ODBC
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.opx.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 |
|