ďťż
 
[postgresql] uaktualnienie tabeli ?ród?owej ďťż
 
[postgresql] uaktualnienie tabeli ?ród?owej
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

[postgresql] uaktualnienie tabeli ?ród?owej



maciek - 17-06-2007 00:16
[postgresql] uaktualnienie tabeli ?ród?owej
  Witam - mam tak:

CREATE TABLE jednostki1
(
id_jm serial NOT NULL,
nazwa_jednostki1 character(10)
)
WITHOUT OIDS; --bo tak jest i tego zmieni? nie mog?

CREATE TABLE jednostki2
(
id_jm serial NOT NULL,
nazwa_jednostki2 character(10),
id_jednostki1 integer
)
WITHOUT OIDS; -- j.w.

Przyk?adowe dane:
insert into jednostki1(id_jm, nazwa_jednostki1) values
(nextval('jednostki1_id_jm_seq'), 'szt');
insert into jednostki1(id_jm, nazwa_jednostki1) values
(nextval('jednostki1_id_jm_seq'), 'kpl');
insert into jednostki1(id_jm, nazwa_jednostki1) values
(nextval('jednostki1_id_jm_seq'), 'para');
insert into jednostki1(id_jm, nazwa_jednostki1) values
(nextval('jednostki1_id_jm_seq'), 'kg');

insert into jednostki2(id_jm, nazwa_jednostki2,id_jednostki1) values
(nextval('jednostki2_id_jm_seq'), 'szt', 1);
insert into jednostki2(id_jm, nazwa_jednostki2,id_jednostki1) values
(nextval('jednostki2_id_jm_seq'), 'kpl',2);
insert into jednostki2(id_jm, nazwa_jednostki2,id_jednostki1) values
(nextval('jednostki2_id_jm_seq'), 'para',3);
insert into jednostki2(id_jm, nazwa_jednostki2,id_jednostki1) values
(nextval('jednostki2_id_jm_seq'), 'kg',4);
insert into jednostki2(id_jm, nazwa_jednostki2,id_jednostki1) values
(nextval('jednostki2_id_jm_seq'), 'nowa1',NULL);
insert into jednostki2(id_jm, nazwa_jednostki2,id_jednostki1) values
(nextval('jednostki2_id_jm_seq'), 'nowa1',NULL);

W za?o?eniu jednostki1.id_jm = jednostki2.id_jednostki1

i teraz robie tak:
CREATE FUNCTION jednostki() RETURNS void AS $BODY$
BEGIN
for wpis in select * from jednostki2 where id_jednostki1 is null loop

BEGIN ;
insert into jednostki1(id_jm, nazwa_jednostki1)
select nextval('jednostki1_id_jm_seq'),
nazwa_jednostki2
from jednostki2
where id_jednostki1 is null ;

-- tu chce wstawi? cos co mi uaktualni tabel? jednostki2 warto?ci?
-- currval('jednostki1_id_jm_seq') dla odpowieeniego wpisu do tabeli jednostki1
-- -pytanie: jak i co ??

END ;
end loop;

RETURN ;
END;
$BODY$ LANGUAGE plpgsql ;

Mile widziana wszelka pomoc
Mak

--
Wys?ano z serwisu OnetNiusy: http://niusy.onet.pl





=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 17-06-2007 00:16

  maciek wrote at 2007-05-30 16:53:
> Witam - mam tak:
>
> CREATE TABLE jednostki1
> (
> id_jm serial NOT NULL,
> nazwa_jednostki1 character(10)
> )
> WITHOUT OIDS; --bo tak jest i tego zmieniÄ? nie mogÄ?
no i co w tym z??ego?
>
> CREATE TABLE jednostki2
> (
> id_jm serial NOT NULL,
> nazwa_jednostki2 character(10),
> id_jednostki1 integer
> )
> WITHOUT OIDS; -- j.w.

wsp????czujÄ? :)

czy m??g??by?? zaspokoiÄ? mojÄ? ciekawo??Ä? i powiedzieÄ? po jakÄ? cholerÄ? taka struktura?

[cut]

> W za??o??eniu jednostki1.id_jm = jednostki2.id_jednostki1
>
> i teraz robie tak:
> CREATE FUNCTION jednostki() RETURNS void AS $BODY$
> BEGIN
> for wpis in select * from jednostki2 where id_jednostki1 is null loop
>
> BEGIN ;
> insert into jednostki1(id_jm, nazwa_jednostki1)
> select nextval('jednostki1_id_jm_seq'),
> nazwa_jednostki2
> from jednostki2
> where id_jednostki1 is null ;
wstawiasz n rekord??w dla ka??dego przej??cia tej pÄ?tli - a chyba chodzi??o o jeden?
>
> -- tu chce wstawiÄ? cos co mi uaktualni tabelÄ? jednostki2 warto??ciÄ?
> -- currval('jednostki1_id_jm_seq') dla odpowieeniego wpisu do tabeli jednostki1
> -- -pytanie: jak i co ??
>
> END ;
> end loop;
>
> RETURN ;
> END;
> $BODY$ LANGUAGE plpgsql ;
>
>
> Mile widziana wszelka pomoc
> Mak

for wpis in select * from jednostki2 where id_jednostki1 is null for update
loop
new_jednostki1_id := nextval('jednostki1_id_jm_seq');
insert into jednostki1( id_jm, nazwa_jednostki1 ) select new_jednostki1_id, wpis.nazwa_jednostki2;
update jednostki2 set id_jednostki1 = new_jednostki1_id where id_jm = wpis.id_jm;
end loop;




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 17-06-2007 00:16

  maciek wrote:
> Witam - mam tak:
>
> CREATE TABLE jednostki1
> (
> id_jm serial NOT NULL,
> nazwa_jednostki1 character(10)
> )
> WITHOUT OIDS; --bo tak jest i tego zmieni? nie mog?
>
> CREATE TABLE jednostki2
> (
> id_jm serial NOT NULL,
> nazwa_jednostki2 character(10),
> id_jednostki1 integer
> )
> WITHOUT OIDS; -- j.w.
>
> Przyk?adowe dane:
> insert into jednostki1(id_jm, nazwa_jednostki1) values
> (nextval('jednostki1_id_jm_seq'), 'szt');

Po co nextval. Masz kolumn? serial i zostaw to postgresowi.

> i teraz robie tak:
> CREATE FUNCTION jednostki() RETURNS void AS $BODY$
> BEGIN
> for wpis in select * from jednostki2 where id_jednostki1 is null loop
>
> BEGIN ;
> insert into jednostki1(id_jm, nazwa_jednostki1)
> select nextval('jednostki1_id_jm_seq'),
> nazwa_jednostki2
> from jednostki2
> where id_jednostki1 is null ;

Po pierwszym przej?ciu p?tli chcesz za?atwi? wszystkie?

> -- tu chce wstawi? cos co mi uaktualni tabel? jednostki2 warto?ci?
> -- currval('jednostki1_id_jm_seq') dla odpowieeniego wpisu do tabeli jednostki1
> -- -pytanie: jak i co ??

UPDATE, tylko rób jeden insert na p?tle, albo u?yj z??czenia po
nazwie_jednostki, o ile jest unikalna.

> END ;
> end loop;
>
> RETURN ;
> END;
> $BODY$ LANGUAGE plpgsql ;

--
P.M.




mak_23@poczta.onet.pl - 17-06-2007 00:16

  > maciek wrote at 2007-05-30 16:53:
> > Witam - mam tak:
> >
> > CREATE TABLE jednostki1
> > (
> > id_jm serial NOT NULL,
> > nazwa_jednostki1 character(10)
> > )
> > WITHOUT OIDS; --bo tak jest i tego zmieni� nie mog�
> no i co w tym z?�ego?
> >
> > CREATE TABLE jednostki2
> > (
> > id_jm serial NOT NULL,
> > nazwa_jednostki2 character(10),
> > id_jednostki1 integer
> > )
> > WITHOUT OIDS; -- j.w.
>
> wsp???�czuj� :)
>
> czy m??g?�by?� zaspokoi� moj� ciekawo?�� i powiedzie� po jak� choler�
taka struktura?

??czenie dwóch systemów - jeden wysya?a dane do drugiego,drugi musi zna? ( do
innych celów) id_jednostki1 - takie powi?zanie

>
>
> [cut]
>
> > W za?�o??eniu jednostki1.id_jm = jednostki2.id_jednostki1
> >
> > i teraz robie tak:
> > CREATE FUNCTION jednostki() RETURNS void AS $BODY$
> > BEGIN
> > for wpis in select * from jednostki2 where id_jednostki1 is null loop
> >
> > BEGIN ;
> > insert into jednostki1(id_jm, nazwa_jednostki1)
> > select nextval('jednostki1_id_jm_seq'),
> > nazwa_jednostki2
> > from jednostki2
> > where id_jednostki1 is null ;
> wstawiasz n rekord??w dla ka??dego przej?�cia tej p�tli - a chyba chodzi?�o o
jeden?
> >
> > -- tu chce wstawi� cos co mi uaktualni tabel� jednostki2 warto?�ci�
> > -- currval('jednostki1_id_jm_seq') dla odpowieeniego wpisu do tabeli
jednostki1
> > -- -pytanie: jak i co ??
> >
> > END ;
> > end loop;
> >
> > RETURN ;
> > END;
> > $BODY$ LANGUAGE plpgsql ;
> >
> >
> > Mile widziana wszelka pomoc
> > Mak
>
>
> for wpis in select * from jednostki2 where id_jednostki1 is null for update
> loop
> new_jednostki1_id := nextval('jednostki1_id_jm_seq');
> insert into jednostki1( id_jm, nazwa_jednostki1 ) select
new_jednostki1_id, wpis.nazwa_jednostki2;
> update jednostki2 set id_jednostki1 = new_jednostki1_id where id_jm =
wpis.id_jm;
> end loop;
>
>
>
proste, skuteczne :)
dzi?ki
Mak

--
Wys?ano z serwisu OnetNiusy: http://niusy.onet.pl
  • 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] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= [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?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lunadance.htw.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