Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nr pozycji po sortowaniu
Forum PHP.pl > Forum > Przedszkole
DamianMMC
Z mySQL pracuję od kilku dni. Szukałem w wielu wątkach, ale jakoś nie mogłem znaleźć odpowiedzi (lub nie widziałem że to jest to), otóż Mam bazę graczy i każdy ma jakąś swoją wartość money. I zrobienie TOP 10 to nie jest problem.
  1. SELECT * FROM stats ORDER BY money DESC LIMIT 10

Ale jak sprawdzić w najprostszy sposób "Twoje miejsce w rankingu to: ...".

Z góry dziękuję za pomoc smile.gif
nospor
http://nospor.pl/mysql-faq.html#faq-8
DamianMMC
  1. set @id=5,@nr = 0, @idnr = 0;
  2. select @idnr as nr from
  3. (SELECT @nr:=@nr+1,if(ID=@id, @idnr := @nr,@idnr=@idnr),ID FROM tabela where jakiespole ='jakiswarunek' order by jakiespole jakiessortoanieASClubDESC) podsel where podsel.ID = @id;


No dobrze, próbowałem na kilka sposobów ale nie działało mi to poprawnie. Jak powinienem edytować powyższy kod by wkoncu zadziałao (tabela - stats, money - wg tego ma być sortowana topka, uuid - gracza o takim uuid poszukiwana jest pozycja w rankingu.

Wybaczcie ale nie umiem sobie jeszcze z tym poradzić.
nospor
No to pokaz jak to robiles. Skad mam wiedziec gdzie zrobiles blad.I pamietaj, ze kazde zapytanie z tego co tu masz ma byc wykonane oddzielnie w php a nie wszystko naraz
DamianMMC
  1. set @id=5,@nr=0, @idnr=0;
  2. select @idnr as nr from
  3. (SELECT @nr:=@nr+1,if(ID=@id, @idnr := @nr,@idnr=@idnr),ID FROM stats where `name` ='DamianMMC' order by money DESC) podsel where podsel.ID = @id;


Chce wyciągnąć jaki nr w tej liscie ma gracz o nicku 'DamianMMC'. I dlaczego to nie działa?
nospor
W linku do ktorego ci odeslalem wszystko masz wyjasnione, opisane co jest co. Wszystko to masz nie po chinsku ale po polsku. A mimo to ignorujesz to wszystko i wymyslasz jakies swoje cuda i wielce zdziwiony ze nie dziala.
DamianMMC
Rozpędziłem się, ale teraz wszystko ładnie działa tak jak chciałem.

Teraz jeszcze krótkie pytanie co to tego kodu

  1. SET @id=5,@nr = 0, @idnr = 0;
  2. SELECT @idnr AS nr FROM (SELECT @nr:=@nr+1,IF(ID=@id, @idnr := @nr,@idnr=@idnr),ID FROM stats ORDER BY money DESC) podsel WHERE podsel.ID = @id;


Ta pierwsza linia (set @id=5,@nr = 0, @idnr = 0) wprowadza coś w rodzaju zmiennych tymczasowych na czas danego zapytania?
Co oznacza "as" w tym kontekście? (wiem ze to jest "tak jak")
Co oznacza zawartość tego zawiasu ID=@id, @idnr := @nr,@idnr=@idnr ?
I ostatnie, "podsel" zakończ gdy... ?

Wybaczcie za może mało precyzyjne/ głupie pytania, ale w końcu to dział "Przedszkole" smile.gif
Dzięki za odpowiedź smile.gif
nospor
1) tak
2) as okresla Alias. zamiast durnej nazwy @idnr w wyniku zapytania zobaczysz ladne "nr"
3) Manual mysql IF - jesli prawda to zrob to a jak nie to zrob tamto
4) podsel to jest alias dla podzapytania przed podsel. dzieki temu odwolujemy sie do wynikow tego podzapytania. I tak, konczymy gdy to zapytanie bedzie na etapie szukanego przez nas @id
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.