ďťż
 
UPDATE i zlozona klauzula where ďťż
 
UPDATE i zlozona klauzula where
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

UPDATE i zlozona klauzula where



Darek - 21-06-2006 00:10
UPDATE i zlozona klauzula where
  Potrzebuje zrobic update jednej kolumny na pewnej tabeli, tyle ze
wiersze ktore maja ulec aktualizacji maja zlozona klauzule where:

Uproszczona tabela:

create table my_table(
id1 char(32) not null,
id2 integer not null,
id3 char(5) not ull,
id4 char(5) not null,
updateCol integer default 0 not null,
.... pozostale kolumny
);

Kolumny od id1 do id4 tworza klucz glowny.
A ja potrzebuje nadac wartosc 1 kolumnie updateCol dla wierszy, ktore
zostaja zwrocone przez taki select:

select id1, max(id2), id3, id4 from my_table group by id1, id3, id4

trudnosc dla mnie polega na tym ze w klauzuli where jest nie jedna ale
4 kolumny i agregacja.

Dodatkowo mam bazy w DB2, Oracle i SQL Server i musze to uruchomic na
kazdej z nich (oczywiscie moze byc rozna skladnia).

Jakies pomysly?

Dziekuje
Darek





Grzegorz Danowski - 21-06-2006 00:10

  Uzytkownik "Darek" <dwojtas@gmail.com> napisal w wiadomosci
news:1150793288.076843.291390@h76g2000cwa.googlegr oups.com...
> Potrzebuje zrobic update jednej kolumny na pewnej tabeli, tyle ze
> wiersze ktore maja ulec aktualizacji maja zlozona klauzule where:
>
> Uproszczona tabela:
>
> create table my_table(
> id1 char(32) not null,
> id2 integer not null,
> id3 char(5) not ull,
> id4 char(5) not null,
> updateCol integer default 0 not null,
> .... pozostale kolumny
> );
>
> Kolumny od id1 do id4 tworza klucz glowny.
> A ja potrzebuje nadac wartosc 1 kolumnie updateCol dla wierszy, ktore
> zostaja zwrocone przez taki select:
>
> select id1, max(id2), id3, id4 from my_table group by id1, id3, id4
>
> trudnosc dla mnie polega na tym ze w klauzuli where jest nie jedna ale
> 4 kolumny i agregacja.
>

Spróbuj cos takiego:

Update
my_table
Set
id2 = 1
From
my_table As T
Where
Exists(
Select
1
From
my_table As M
Where
T.id1 = M.id1
And
T.id3 = M.id3
And
T.id4 = M.id4
Group By
M.id1, M.id3, M.id4
Having
Max(M.id2) = T.id2
)

Pozdrawiam
Grzegorz




Darek - 21-06-2006 00:10

  Usiadlem po raz kolejny, rozpisalem to jeszcze raz i znalazlem
rozwiazanie ktore dziala.
Mam nadzieje ze nie zrobilem bledow tlumaczac zapytanie na nazwy podane
we wczesniejszym pytaniu.
Moze to sie komus kiedys przyda.

update my_table
set updateCol=1
where exists
(select innerAlias.i1 from
(select id1 i1, max(id2) i2, id3 i3, id4 i4
from my_table group by id1, id2, id3) as innerAlias
where id1=innerAlias.i1 and id2=innerAlias.i2
and id3=innerAlias.i3 and id4=innerAlias.i4
)

Update na wierszach zwroconych przez zapytanie zagniezdzone.

Pozdrawiam
Darek




Kmail - 21-06-2006 00:10

 

>Kolumny od id1 do id4 tworza klucz glowny.
>A ja potrzebuje nadac wartosc 1 kolumnie updateCol dla wierszy, ktore
>zostaja zwrocone przez taki select:
> select id1, max(id2), id3, id4 from my_table group by id1, id3, id4

taka wynika z tojego pytania odpowiez:

update my_table set updateCol = 1
where
id1= :id1 and id2= :id2 and id3= :id3 and id4= :id4
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= Która z baz: [PGSQL] czy [MySQL] będzie lepsza w takim zastosowaniu (masowe UPDATE) MSSQL - =?iso-8859-2?Q?kolejno=B6=E6?= przetwarzania przy UPDATE =?ISO-8859-2?Q?[MSSQL_2005_+.NET]_Dramatycznie_d=B3ugi_Update_bazy_....?= =?iso-8859-2?Q?=5Bmssql=5D_update_na_kilku_tabelach_jednocze= B6nie?= =?ISO-8859-2?Q?[MS_SQL]_update_wielu_p=F3l_na_raz_z_selecta?= =?iso-8859-2?Q?=5Bpgsql=5D_update_podw=F3jnego_z=B3=B1czenia? = [Oracle] Jak opymalnie update'owac tabele danymi z innej tabeli [MYSQL] Update if =?ISO-8859-2?Q?kom=F3rka_is_null?= [db2] Update sql posiłkowany danymi z innej tabeli
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • natalia97.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