ďťż
 
=?iso-8859-2?Q?=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1czenia? = ďťż
 
=?iso-8859-2?Q?=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1czenia? =
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

=?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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • quentinho.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com