Autor Zpráva
Marenek
Profil *
Ahoj, nevíte kde je problém?

Chci seřadit jednu tabulku "coupe_asts" podle údajů z jiné tabulky "coupe_zapas_hrac"

zde mám příkaz:


mysql_query("SET @pozice:=0") or die;

mysql_query("UPDATE coupe_asts LEFT JOIN (SELECT hracid, SUM(gls) sum_gls, SUM(asts) sum_asts FROM coupe_zapas_hrac GROUP BY hracid ORDER BY sum_gls DESC, sum_asts DESC) goly on coupe_asts.hracid=goly.hracid SET poradi=@pozice:=@pozice+1 ORDER BY goly.sum_gls DESC, goly.sum_asts DESC") or die ("Nelze updatovat asistenty ".mysql_error());


Píše mi to error: Nelze updatovat asistenty Incorrect usage of UPDATE and ORDER BY

Jakpak to?
Kajman_
Profil *
Stačí se podívat do manuálu na syntaxi update a zjistíte, že order by a limit lze použít pouze při update jedné tabulky.
Marenek
Profil *
Takže stačí vynechat jeden order by, v tom selectu nebo tohle řešení neexistuje, musím to vymyslet jinak?
Marenek
Profil *
Tohle mi píše tu samou hlášku a mám tam jen 1 ORDER BY a žádný limit:


mysql_query("SET @pozice:=0") or die;

mysql_query("UPDATE coupe_asts, (SELECT hracid, SUM(gls) as sum_gls, SUM(asts) as sum_asts FROM coupe_zapas_hrac where hracid=coupe_asts.hracid GROUP BY hracid) as goly SET poradi=@pozice:=@pozice+1 ORDER BY goly.sum_gls DESC, goly.sum_asts DESC") or die ("Nelze updatovat asistenty ".mysql_error());
Kajman_
Profil *
Opakuji, že order by nelze použít, pokud není v update použita jen jedna tabulka (bez spojení).

http://dev.mysql.com/doc/refman/5.1/en/update.html
Marenek
Profil *
o.k. Je tedy řešení? Naznačujete že řešení je ve spojení? Tak teď nevím. Mrknu na odkaz, díky.
Kajman_
Profil *
No řešením by mohlo být si udělat sloupečky na góly a asistence... ty naplnit jedním update bez řazení. A pak na základě těchto sloupečků teprve udělat update s group by už totiž stačí koukat do té samé tabulky a nikam jinam.
Kajman_
Profil *
teda s order by
Marenek
Profil *
Rozumím, už jsem nad tím uvažoval, že bych to tak udělal. Ošetřit to přímo na vstupu dat. A v současné době je to pro mě nejpřijatelnější řešení, proč se drbat za pravým uchem levou rukou.;)
Toto téma je uzamčeno. Odpověď nelze zaslat.