ďťż
 
[MySQL] Skopiowanie =?ISO-8859-2?Q?warto=B6ci_z_jednego_po?==?ISO-8859-2?Q?la_do_drugiego_w_jednej_tabeli=2C_r=F3=BFne_?= =?ISO-8859-2?Q?wiersze=2E?= ďťż
 
[MySQL] Skopiowanie =?ISO-8859-2?Q?warto=B6ci_z_jednego_po?==?ISO-8859-2?Q?la_do_drugiego_w_jednej_tabeli=2C_r=F3=BFne_?= =?ISO-8859-2?Q?wiersze=2E?=
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

[MySQL] Skopiowanie =?ISO-8859-2?Q?warto=B6ci_z_jednego_po?==?ISO-8859-2?Q?la_do_drugiego_w_jednej_tabeli=2C_r=F3=BFne_?= =?ISO-8859-2?Q?wiersze=2E?=



sawic - 14-12-2006 16:09
[MySQL] Skopiowanie =?ISO-8859-2?Q?warto=B6ci_z_jednego_po?==?ISO-8859-2?Q?la_do_drugiego_w_jednej_tabeli=2C_r=F3=BFne_?= =?ISO-8859-2?Q?wiersze=2E?=
  Witam.
Mam tak? tabel?:

user (char (20)) | wartosc (int (5)) | nowy (int(1))
----------------------------------------------------
user1 | 25 | 0
user2 | 13 | 0
user3 | 233 | 0
user1 | NULL | 1
user3 | NULL | 1

Czy da si? za pomoc? jednego zapytania skopiowa? pole wartosc
odpowiednio dla ka?dego u?ytkownika z wiersza gdzie nowy = '0' do
wiersza gdzie nowy = '1' ?
Czyli po owym zapytaniu stan tabeli powinien wygl?da?:

user (char (20)) | wartosc (int (5)) | nowy (int(1))
----------------------------------------------------
user1 | 25 | 0
user2 | 13 | 0
user3 | 233 | 0
user1 | 25 | 1
user3 | 233 | 1

Próbowa?em takich zapyta?:

- update db.table set wartosc = wartosc where db.table.user =
db.table.user and nowy = '1'

- update db.table set wartosc = (select wartosc from db.table where nowy
= '0' and db.table.user = db.table.user) where nowy = '1'

Niestety nie by?o to dobre rozumowanie.

Czy da si? w ogóle co? takiego wykona? ?

Pozdrawiam





Artur - 14-12-2006 16:09
=?iso-8859-2?q?Re:_Skopiowanie_warto=B6ci_z_jednego_pola_do_d rugiego_w_jednej_tabeli,_r=F3=BFne?=
  > Czy da si? w ogóle co? takiego wykona? ?

Da si?, np:

update tab1 z
set (z.wartosc) =
(select w.wartosc
from tab1 w
where w.nowy = 0 and w.uzytk = z.uzytk)
where z.nowy = 1

-- Artur Wro?ski




sawic - 14-12-2006 16:09

  Artur napisa?(a):
> Da si?, np:
>
> update tab1 z
> set (z.wartosc) =
> (select w.wartosc
> from tab1 w
> where w.nowy = 0 and w.uzytk = z.uzytk)
> where z.nowy = 1

Nie dzia?a?.

Zapytanie:
update db.test z set z.wartosc = (select w.wartosc from db.test w where
w.nowy = 0 and w.user = z.user) where z.nowy = 1

B??d:
#1093 - You can't specify target table 'z' for update in FROM clause

Pozdrawiam




Artur - 14-12-2006 16:10
=?iso-8859-2?q?Re:_Skopiowanie_warto=B6ci_z_jednego_pola_do_d rugiego_w_jednej_tabeli,_r=F3=BFne?=
  > > update tab1 z
> > set (z.wartosc) =
> > (select w.wartosc
> > from tab1 w
> > where w.nowy = 0 and w.uzytk = z.uzytk)
> > where z.nowy = 1
>
> B??d:
> #1093 - You can't specify target table 'z' for update in FROM clause

Pewnie znów ogranicznie MySQL-a.

Mo?esz jeszcze spróbowa? takiej konstrukcji (b?dzie dzia?a? na
DB2), zobacz czy dzia?a w MySQL:

update (
select z.wartosc as wartosc,
(select w.wartosc from tab1 w where w.uzytk=z.uzytk and w.nowy = 0)
as nowy
from tab1 z
where z.nowy = 1
)
set wartosc = nowy

zapytanie ze ?rodka (pierwszy select) wyszukuje te rekordy, które
powinny by? aktualizowane (nowy = 1), podaj?c w jednej linii star?
i now? warto??:

WARTOSC NOWY
- 25
- 233

Rokordy s? spozycjonowane niewidocznym kursorem, wie? nie b?dziesz
musia? u?ywa? innych pól do ich identyfikacji.

update po prostu przepisuje now? warto??. Oto rezultat:

UZYTK WARTOSC NOWY
-------------------- ----------- -----------
user2 13 0
user1 25 0
user1 25 1
user3 233 0
user3 233 1

-- Artur Wro?ski





Maciek Dobrzanski - 14-12-2006 16:10

  "sawic" <sawicc@wytnij.to.gmail.com> wrote in message
news:ela4a3$230$1@news.onet.pl...

> Czy da si? za pomoc? jednego zapytania skopiowa? pole wartosc odpowiednio
> dla ka?dego u?ytkownika z wiersza gdzie nowy = '0' do wiersza gdzie nowy =
> '1' ?

Mo?e by? tak:

UPDATE tabela t1, tabela t2 SET t1.wartosc = t2.wartosc WHERE t1.user =
t2.user AND t1.nowy = 1 AND t2.nowy = 0;

Maciek




sawic - 14-12-2006 16:10

  Artur napisa?(a):
> Mo?esz jeszcze spróbowa? takiej konstrukcji (b?dzie dzia?a? na
> DB2), zobacz czy dzia?a w MySQL:
>
> update (
> select z.wartosc as wartosc,
> (select w.wartosc from tab1 w where w.uzytk=z.uzytk and w.nowy = 0)
> as nowy
> from tab1 z
> where z.nowy = 1
> )
> set wartosc = nowy

Niestety te? nie dzia?a.
B??d:

#1248 - Every derived table must have its own alias

Nie dr??y?em dalej, bo przyk?ad jaki poda? Maciek w po?cie ni?ej dzia?a
jak nale?y.

Wielkie dzi?ki za pomoc.

Pozdrawiam




sawic - 14-12-2006 16:10

  Maciek Dobrzanski napisa?(a):
> Mo?e by? tak:
>
> UPDATE tabela t1, tabela t2 SET t1.wartosc = t2.wartosc WHERE t1.user =
> t2.user AND t1.nowy = 1 AND t2.nowy = 0;

Dzia?a.
Dzi?ki.

Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Gdzie MySQL 4.1, a gdzie 5.0? [MS SQL] "set names" (mySQL) w MS SQL oracle -> oracle lub oracle -> mysql replikacja - programy [mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu. [MySQL] Zwrot tego, co pasuje i nie pasuje :-/ [pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1 [mysql] galeria zdjec - numerowanie zdjec [MySQL] Zapytanie z pliku , wynik do pliku [mysql] CONCAT agregujący, ale nie GROUP_CONCAT() mysql data 0000-00-00 na koniec
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • adwokat.keep.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