Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Update całej tabeli o dane z innej tabeli
Forum PHP.pl > Forum > Bazy danych
Luke_Star
Mam problem ponieważ nie wiem jak zrobic aby jedno zapytanie aktualizowało całą tabele. Problem jest taki:

mam tabele z wieloma rekordami o takiej strukturze:

TABLE dane (
Euro INT,
PLN INT,
User Varchar(60),
)

w tej tabeli zawieraja sie dane dotyczace ilości pieniedzy. Druga tabela to tabela z wartościami które maja podwyższać liczbe Euro lub PLN według użytkownika. Oto jest struktura:

TABLE: zwieksz (
zw_Euro INT,
zw_PLN INT,
User Varchar(60),
)

chce zrobic tak aby po wywołaniu jednego zapytania wszystkie rekordy w tabeli dane zostały zwiekszone o wartości z tabeli zwieksz (oczywiście według wartości user). Po kombinacjach z UPDATE doszłem jedynie do błedów :/ Moglibyście pomóc?
shpyo
  1. UPDATE dane SET euro=euro+zwieksz.euro_zw, pln=pnl+zwieksz.pln_zw WHERE user=zwieksz.user

a tak próbowałeś (pisane z palca - teoretycznie powinno działać tongue.gif)?
edit: dopiero teraz zauważyłem, że nie zwiększał tylko zmieniał.
Luke_Star
zwraca mi:
ERROR 1054 (42S22): Unknown column 'zwieksz.user' in 'field list'
Mary$
bo musisz napisać User, a nie user. Duże i małe litery się liczą. To samo z innymi polami. masz PLN, a nie pln
Luke_Star
bez wzgledu na to jak pisze zwraca to samo
Norbas
Sprawdź:
  1. UPDATE dane SET Euro=Euro+(SELECT zw_Euro FROM zwieksz WHERE zwieksz.User=dane.User),
  2. PLN=PLN+(SELECT zw_PLN FROM zwieksz WHERE zwieksz.User=dane.User)
  3. WHERE dane.User IN (SELECT User FROM zwieksz)

Jeżeli jesteś pewien, że każdy rekord z tabeli 'dane' ma swój odpowiednik w tabeli 'zwieksz', to można opuścić ostatni warunek WHERE
shpyo
  1. UPDATE dane d, zwieksz z SET d.euro=d.euro+z.euro_zw, d.pln=d.pln+z.pln_zw WHERE d.user=z.user

stworzyłem u siebie te tabele. Takie zapytanie mi wyszło i działa.
Luke_Star
Nie wiem moze to wina wersji mojego MySQL'a ale twoja wersja shpyo nie działa (wywala ten sam bład). Natomiast wersja Norbas'a trybi bezproblemowo. Ale dziekuje wam obojgu za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.