![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 24.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Robię dośc skomplikowane obliczenia z wielu tabel, i czasem skrypt się kończył zanim zdążyłem wszystko policzyć. Dodałem zatem nową kolumnę: nowy, gdzie dla każdego nowo obliczonego wiersza wpisuję 1, gdy już skończę wszystkie obliczenia kasuje wszystkie wiersze gdzie nowy = '0' i robie update na nowy = '0' tam gdzie jest jeden. W ten sposób rozwiązałem, że skrypt może się zawsze zakończyć a ja i tak będę czytał tylko poprawne wartości. Problem występuje, gdy chcę coś przenieść z nowy = '0' do nowy = '1'. Struktura tabeli: uzytkownik (char (20)) jakies_pole (int (11)) nowy (int (1)) W tabeli mam użytkowników z polem nowy = '0' Następnie wpisuję użytkowników do bazy, każdy z nowy = '1' I teraz chcę skopiować wartość `jakies_pole` z nowy = '0' do nowy = '1' odpowiednio dla każdego użytkownika. Próbowałem takiego tworu:
Niestety nie działa. Czy w ogóle da się to jakoś wykonać w jednym zapytaniu ? Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 856 Pomógł: 19 Dołączył: 30.08.2005 Skąd: 100lica Ostrzeżenie: (0%) ![]() ![]() |
a coś takiego:
update tabela set wartosc=nowa_wartosc where nowy=0 and cos dodatkowego albo jak nowego też zmieniasz to: update tabela set wartosc=nowa_wartosc, nowy=1 where nowy=0 and cos dodatkowego Nie wiem czy dokładnie o coś takiego chodzi ale z opisu wynika że chyba tak -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 24.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Absolutnie nie o coś takiego
![]() Ja to potrafię zakręcić nawet najprostszą rzecz ![]() Już tłumaczę. Strktura tabeli jak napisałem wyżej, zawartość: uzytkownik | jakies_pole | nowy user1 | 25 | 0 user2 | 13 | 0 user1 | NULL | 1 I teraz chciałbym wykonać zapytanie które skopiuje mi wartość z `jakies_pole` dla user1 and nowy = '0' do `jakies_pole` dla user1 and nowy = '1' W efekcie czego w bazie będę miał: uzytkownik | jakies_pole | nowy user1 | 25 | 0 user2 | 13 | 0 user1 | 25 | 1 Za groma nie wiem jak to rozwiązać. Pozdrawiam |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 856 Pomógł: 19 Dołączył: 30.08.2005 Skąd: 100lica Ostrzeżenie: (0%) ![]() ![]() |
A coś takiego?
insert into tabela (uzytkownik, jakies_pole, nowy) select uzytkownik, jakies_pole, 1 from tabela where nowy=0 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 24.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Też się nie da.
Przedewszystkim dlatego, że nie robię insert a robię update. I coś takiego:
Wywala mi taki komunikat: You can't specify target table 'table' for update in FROM clause pozdrawiam |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 12:32 |