Autor | Zpráva | ||
---|---|---|---|
Vanama Profil |
#1 · Zasláno: 23. 8. 2009, 14:47:26
Možná je to hloupý dotaz, ale třeba něco takového funguje a opravdu o tom nevím :)
Je možné s databaze získat pořadí řádku dle nějakého řazení (score DESC)? Abych to vysvětlil. Mám tabulku s výsledky her hráčů a hodilo by se mi zobrazit skóre včetně umístění hráče, který si to právě prohlíží. Ptám se proto, protože jediné řešení, které mě napadá je vyselectovat všechny skóre a pomocí php je projít a počítat než dorazím k výsledku daného uživatele, což není asi úplně ideální řešení. Obávám se však, mysql nic takového neumí. |
||
panther Profil |
#2 · Zasláno: 23. 8. 2009, 14:49:43
Vanama
„Je možné s databaze získat pořadí řádku dle nějakého řazení (score DESC)? “ ano. ... ORDER BY score DESC |
||
Vanama Profil |
#3 · Zasláno: 23. 8. 2009, 15:01:15 · Upravil/a: Vanama
Tohle nemyslím, asi jsem se špatně vyjádřil. Nechci výpis, chci jen pořadí.
Mám v mysql např. řádky: userid gameid score 54 32 300 65 32 400 100 32 350 Z tohodle bych chtěl dostat např. číslo (2) jako umístění podle skóre, když se budu ptát na uživatele s id 100. Otázka je jestli to jde vyndat z db bez použití php skriptu. |
||
Alphard Profil |
#4 · Zasláno: 23. 8. 2009, 15:16:41 · Upravil/a: Alphard
Možná nějak takhle
select count(userid) + 1 poradi from tabulka where score > (select score from tabulka where userid = 100) Opraveno obrácené porovnání. |
||
Vanama Profil |
#5 · Zasláno: 23. 8. 2009, 15:50:55
Díky, tohle funguje :)
Akorát phpmyAdmin mi u toho nechce napsat kolik času dotaz zabral :) |
||
TomášK Profil |
#6 · Zasláno: 23. 8. 2009, 16:19:18
Tohle je použitelné, pokud vybíráš jednoho uživatele. Pokud bys potřeboval očíslovat víc záznamů nebo celou tabulku, má to kvadratickou složitost, může to být pomalé. Pořadí bych vložil jako další sloupec a aktualizoval ho při vkládání dat, pokud je to možné.
Koukni i do FAQ na číslování řádku, mohlo by se hodit... |
||
Vanama Profil |
#7 · Zasláno: 24. 8. 2009, 09:01:50
Bohužel pořadí se stále mění s vkládáním nových záznamů.
Od Alpharda to funguje dobře a řekl bych i rychle. Když jsem změnil dotaz (nepoužil jsem gameid), tak to z více jak 100 tisíc záznamů vyplyvlo číslo kolem 38 tis za 0,012 vteřin. Díky všem za rady. |
||
Alphard Profil |
#8 · Zasláno: 24. 8. 2009, 09:17:33
Možná by bylo ještě rychlejší mít count(score) a index na sloupci score.
|
||
Časová prodleva: 15 let
|
0