=?iso-8859-2?Q?=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1czenia? =
=?iso-8859-2?Q?Andrzej_Str=F3=BFy=F1ski?= - 22-07-2006 04:33
=?iso-8859-2?Q?=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1czenia? =
Witam,
chcę zrobić update'a wybranych rekordów danymi z innych rekordów tej samej tabeli (i tego samego pola - choć to pewnie bez znaczenia). Jak to zapisać aby zadziałało? Ten zapis jest niestety błędny:
UPDATE tab1 SET pole=b.pole FROM tab1 a, tab1 b, tab_rel c WHERE a.id=c.id1 AND b.id=c.id2
Pgsql nie pozwala wpisać np. SET a.pole=
Czy jest sposób żeby zrobić to w jednym zapytaniu?
pozdrawiam Andrzej Stróżyński
Wojtek pBT (prac) - 22-07-2006 04:33
Andrzej Stróżyński napisał(a): > Witam, > > chcę zrobić update'a wybranych rekordów danymi z innych rekordów tej > samej tabeli (i tego samego pola - choć to pewnie bez znaczenia). Jakto > zapisać aby zadziałało? Ten zapis jest niestety błędny: > > UPDATE tab1 SET pole=b.pole > FROM tab1 a, tab1 b, tab_rel c > WHERE a.id=c.id1 AND b.id=c.id2 > > Pgsql nie pozwala wpisać np. SET a.pole= > > Czy jest sposób żeby zrobić to w jednym zapytaniu?
dla MySQL działa:
UPDATE tab1, tab3 AS tab2 SET tab1.a=tab2.b WHERE tab1.id=tab2.id
pBT
> > pozdrawiam > Andrzej Stróżyński >
=?iso-8859-2?Q?Andrzej_Str=F3=BFy=F1ski?= - 22-07-2006 04:33
=?iso-8859-2?Q?Re:_=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1cze nia?=
Użytkownik "Wojtek pBT (prac)" napisał: [...] > dla MySQL działa: > > UPDATE tab1, tab3 AS tab2 SET tab1.a=tab2.b WHERE tab1.id=tab2.id
w pgsql składnia: UPDATE tab1, tab2 SET ... jest nieprawidłowa niestety :( Nie można nawet użyć aliasu dla update'owanej tabeli: UPDATE tab1 a SET ... FROM tab2 b ...
A.S.
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 22-07-2006 04:33
Andrzej Stróżyński wrote: > Witam, > > chcę zrobić update'a wybranych rekordów danymi z innych rekordów tej > samej tabeli (i tego samego pola - choć to pewnie bez znaczenia). Jak to > zapisać aby zadziałało? Ten zapis jest niestety błędny: > > UPDATE tab1 SET pole=b.pole > FROM tab1 a, tab1 b, tab_rel c > WHERE a.id=c.id1 AND b.id=c.id2 > > Pgsql nie pozwala wpisać np. SET a.pole= > > Czy jest sposób żeby zrobić to w jednym zapytaniu?
Jak mam problemy ze składnia, to czytam dokumentacje! Nawet nie trzeba szukać!
P.S. Z FROM wywal tab1 i odwołuj się do niej po pełnej nazwie, jeśli potrzeba.
-- P.M.
=?iso-8859-2?Q?Andrzej_Str=F3=BFy=F1ski?= - 22-07-2006 04:33
=?iso-8859-2?Q?Re:_=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1cze nia?= Użytkownik "Paweł Matejski" napisał: > Andrzej Stróżyński wrote: >> Witam, >> >> chcę zrobić update'a wybranych rekordów danymi z innych rekordów tej >> samej tabeli (i tego samego pola - choć to pewnie bez znaczenia). Jak to >> zapisać aby zadziałało? Ten zapis jest niestety błędny: >> >> UPDATE tab1 SET pole=b.pole >> FROM tab1 a, tab1 b, tab_rel c >> WHERE a.id=c.id1 AND b.id=c.id2 >> >> Pgsql nie pozwala wpisać np. SET a.pole= >> >> Czy jest sposób żeby zrobić to w jednym zapytaniu? > > Jak mam problemy ze składnia, to czytam dokumentacje! Nawet nie trzeba > szukać! > > P.S. Z FROM wywal tab1 i odwołuj się do niej po pełnej nazwie, jeśli > potrzeba.
faktycznie, w tym przykładzie nie wygląda to najrozsądniej, ale też mój problem leży gdzie indziej: czy da się zrobić (a jeśli tak to jak?) update'a przy złączeniu tabeli? Jeśli złączam różne tabele to nie ma problemu: UPDATE tab1 SET pole=b.pole FROM tab2 b WHERE tab1.id=b.id
ale jeśli zamiast tab2 chcę ponownie użyć tab1 to co wtedy? Jest na to sposób (poza tabelą tymczasową)?
pozdrawiam A.S.
A.S.
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 22-07-2006 04:33
Andrzej Stróżyński wrote: > > faktycznie, w tym przykładzie nie wygląda to najrozsądniej, ale też mój > problem leży gdzie indziej: > czy da się zrobić (a jeśli tak to jak?) update'a przy złączeniu tabeli? > Jeśli złączam różne tabele to nie ma problemu: > UPDATE tab1 SET pole=b.pole > FROM tab2 b > WHERE tab1.id=b.id > > ale jeśli zamiast tab2 chcę ponownie użyć tab1 to co wtedy? Jest na to > sposób (poza tabelą tymczasową)?
Wtedy dodajesz ją już do FROM, tylko koniecznie z aliasem.
Po prostu zamień tab2 na tab1 w powyższym i będzie działać.
-- P.M.
=?iso-8859-2?Q?Andrzej_Str=F3=BFy=F1ski?= - 22-07-2006 04:34
=?iso-8859-2?Q?Re:_=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1cze nia?= Użytkownik "Paweł Matejski" napisał: [...] > Wtedy dodajesz ją już do FROM, tylko koniecznie z aliasem.
Dzięki za cierpliwość. Najgorzej to uczepić się jednego i nie zwracać uwagi na resztę, ale jestem jeszcze przed urlopem i pewnie dlatego coraz trudniej o koncentrację :)
pozdrawiam A.S.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
=?iso-8859-2?q?Ati_Mobility_Radeon_X300_W_Notebooku_Jak_Zwi=E Akszy=E6_Ilo=B6=E6_Grafiki_Poprzez_Wsp=F3=B3dziele nie_Z_Ramu=3F=3F=3F?=
=?ISO-8859-2?Q?=AFegnam_si=EA=2E=2E=2E?=
Manager =?ISO-8859-2?Q?font=F3w=2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plquentinho.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 |
|