Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Update całej tabeli o dane z innej tabeli
Luke_Star
post
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
shpyo
post
Post #2





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  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ć (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )?
edit: dopiero teraz zauważyłem, że nie zwiększał tylko zmieniał.

Ten post edytował shpyo 24.03.2007, 08:57:42
Go to the top of the page
+Quote Post
Luke_Star
post
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

Ostrzeżenie: (0%)
-----


zwraca mi:
ERROR 1054 (42S22): Unknown column 'zwieksz.user' in 'field list'
Go to the top of the page
+Quote Post
Mary$
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 19.02.2007
Skąd: 3city

Ostrzeżenie: (0%)
-----


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

Ten post edytował Mary$ 23.03.2007, 23:30:23
Go to the top of the page
+Quote Post
Luke_Star
post
Post #5





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

Ostrzeżenie: (0%)
-----


bez wzgledu na to jak pisze zwraca to samo
Go to the top of the page
+Quote Post
Norbas
post
Post #6





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
shpyo
post
Post #7





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  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.

Ten post edytował shpyo 24.03.2007, 09:08:27
Go to the top of the page
+Quote Post
Luke_Star
post
Post #8





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 17:15