Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Zapytanie problem
xavierek
post 24.07.2011, 23:18:34
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 2
Dołączył: 22.03.2009

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


Witam.
moja baza wygląda następująco:

user_id | date |level

chciał był wyświetlić 100 osob ktore maja najwiekszy level lecz mam problem
  1. $sql = mysql_query ( "SELECT DISTINCT (
  2. user_id
  3. ), level
  4. FROM player_level_history
  5. ORDER BY level $sortorder
  6. LIMIT $from , $to" )

  1. $sql = mysql_query ( "SELECT DISTINCT (
  2. user_id
  3. )
  4. FROM player_level_history
  5. ORDER BY level $sortorder
  6. LIMIT $from , $to" )


po czym pobierałem drugim zapytaniem level i kolejność leveli się nie zgadzała w drugim przykładzie wszystko było by ok tylko ze ide usera się powtarza w wynikach zęby było ciekawiej w phpmyadmin wszystko dobrze się wyświetla metoda druga, lecz w php już nie
Go to the top of the page
+Quote Post
Rid
post 24.07.2011, 23:31:56
Post #2





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Nie wiem co ta zmienna $sortorder tam robi ,ale wyświetlanie najwiekszego rekordu można uzyskać poprzez Max,można także dodać desc,żeby sortowało w porządku malejącym.
  1. $sql = mysql_query ( "SELECT DISTINCT (
  2. user_id
  3. FROM player_level_history
  4. ORDER BY MAX (level)desc $sortorder
  5. LIMIT $from , $to" )


Pisane z ręki nie wiem czy składnia dobra
Go to the top of the page
+Quote Post
xavierek
post 24.07.2011, 23:43:45
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 2
Dołączył: 22.03.2009

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


$sort order to ASC lub DESC

i jest taki problem jeszcze że level może spadać i rosnąć wiec max w tym wypadku odpada potrzebował bym coś w rodzaju select level where max date i dopiero usunąć powtórki
Go to the top of the page
+Quote Post
Rid
post 25.07.2011, 00:00:29
Post #4





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Poprawiłem trochę poprzedni przykład:
  1. "SELECT DISTINCT(user_id), MAX(level) FROM player_level_history GROUP BY user_id
  2.  
  3. ORDER BY MAX(level)$sortorder LIMIT $from , $to"

Cytat
jest taki problem jeszcze że level może spadać i rosnąć wiec max w tym wypadku odpada


Nie wiem ,w czym problem ,przecież przy każdej zmianie w bazie select będzie zwracał inne wyniki.

Ten post edytował Rid 25.07.2011, 00:00:56
Go to the top of the page
+Quote Post
xavierek
post 25.07.2011, 00:11:49
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 2
Dołączył: 22.03.2009

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


niestety jezeli user stracil level to i tak uklada wedlug jego najwiekszego w całęk histori levela a nie wedlug aktualnego levela
Go to the top of the page
+Quote Post
Rid
post 25.07.2011, 00:22:18
Post #6





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Cytat
niestety jezeli user stracil level to i tak uklada wedlug jego najwiekszego w całęk histori levela a nie wedlug aktualnego levela

Nie rozumiem jezeli user stracił lvl,to zrobić update do bazy i po sprawie,potem ten w/w select sprawdza którzy userzy mają najwyższe lvl i sortują
Go to the top of the page
+Quote Post
xavierek
post 25.07.2011, 00:30:10
Post #7





Grupa: Zarejestrowani
Postów: 92
Pomógł: 2
Dołączył: 22.03.2009

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


ta baza zawiera cala historie leveli do wykresow

ok robie update do osobnej bazy bo jak wejdzie mi 10k osob na strone to mysql umrze przy takim czyms
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:12