postgres 8.1 -rule
pasman - 26-05-2006 01:43
postgres 8.1 -rule
czesc. mam trudnosci z tworzeniem regul ON DELETE. mam tabele Dane oraz Statystyki W Statystykach zliczam ilosc wierszy danej kategorii z tabeli Dane. przy usuwaniu danych jednak nie moge zaktualizowac statystyk.
próbowalem nastepujacej reguly ON DELETE(Dane) UPDATE statystyki SET ilosc = ilosc - count(old.kategoria) WHERE statystyki.kategoria=old.kategoria
no i blad: column statystyki.ilosc must appear in GROUP BY clause or be used in aggregate function. ok, no to spróbowalem tak:
UPDATE statystyki SET ilosc = (statystyki.ilosc - (( SELECT count(dane.kategoria) AS count FROM dane WHERE dane.kategoria::text = old.kategoria::text))) WHERE statystyki.kategoria::text = old.kategoria::text;
niestety to sie zle liczy. to moze tak:
UPDATE statystyki SET ilosc = (statystyki.ilosc - (( SELECT count(dane.kategoria) AS count FROM dane WHERE dane.id = old.id))) WHERE statystyki.kategoria::text = old.kategoria::text;
wydaje mi sie ze to jest ok, ale tak sie chcialem poradzic, czy to zapytanie prazwidlowo zliczy ilosc usuwanych rekordów.
=?UTF-8?B?UGF3ZcWCIE1hdGVqc2tp?= - 26-05-2006 01:43
pasman wrote: > czesc. > mam trudnosci z tworzeniem regul ON DELETE. > mam tabele Dane oraz Statystyki > W Statystykach zliczam ilosc wierszy danej kategorii z tabeli Dane. > przy usuwaniu danych jednak nie moge zaktualizowac statystyk. > > próbowalem nastepujacej reguly ON DELETE(Dane) > UPDATE statystyki > SET ilosc = ilosc - count(old.kategoria) > WHERE statystyki.kategoria=old.kategoria > > no i blad: column statystyki.ilosc must appear in GROUP BY clause or > be used in aggregate function. ok, no to spróbowalem tak:
A czemu nie po prostu (select count(old.kategoria) from old where statystyki.kategoria=old.kategoria) zamiast count()? Tego nie sprawdzałem, ale wynika to z dokumentacji, że powinno.
> UPDATE statystyki SET ilosc = (statystyki.ilosc - (( SELECT > count(dane.kategoria) AS count > FROM dane > WHERE dane.kategoria::text = old.kategoria::text))) > WHERE statystyki.kategoria::text = old.kategoria::text; > > niestety to sie zle liczy. to moze tak:
Przecież w subselekcie liczysz ilość pozostałych rekordów, a nie skasowany! Wywal 'statystyka.ilosc - '.
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[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.pldoc.pisz.plpdf.pisz.plshutter.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 |
|