Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z prawidłowym warunkiem, Pytanie MySQL
Aztech
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Mam tabelę RANKING gdzie:
TID - klucz
TurnID - numer turnieju
PID - numer gracza
Rank - ranking gracza jaki posiada

pozostałe pola nie mają znaczenia w tym zapytaniu.

Zapytanie powinno znaleźć niepowtarzające sie osoby (PID), a następnie najwyższy

numer turnieju (TurnID) dla każdej osoby (PID), ale z ograniczeniem ilości turniejów (TurnID) np do piątego (TurnID <= 5)

Moje zapytanie wygląda nastepująco:

  1. SELECT DISTINCT Name, TurnID, Rank
  2. FROM `ranking` GROUP BY Name
  3. HAVING TurnID <=5 AND MAX(TurnID)
  4. ORDER BY TurnID DESC


ale niestety z racji, że DISTINCT szuka od początku do końca znajduje mi pierwsze wystąpienie i warunek na najwyższe TurnID -> MAX(TurnID) nic w zasadzie nie znienia (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
popbart
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


Masz źle zaplanowaną bazę.
Moim zdaniem gracz powinien mieć własną tabelę.
A zapytanie wyglądało by tak:
  1. SELECT gracze.Name, ranking.TurnID, ranking.Rank,max(ranking.turnid)
  2. FROM gracze,ranking WHERE gracze.pid=ranking.pid
  3. GROUP BY gracze.pid
  4. ORDER BY ranking.TurnID DESC


Ten post edytował popbart 13.10.2004, 15:02:42
Go to the top of the page
+Quote Post
Aztech
post
Post #3





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


W sumie to stworzyłem - metoą prób i błędów zapytanie, które mnie interesowało - ale jak się okazało po testach - de facto okazało się, że to iż rankingi są a,tualne przez 2 lata - tzn są przez ten okres naliczane (zapomniałem o tym) zmusiły mnie do przebudowy bazy. A tak przy okazji - tanta baza jest zbudowana poprawnie - pozycja Name jest po to by baza była bardziej przejrzysta - podczas wyszukiwania - niepoprawnych wpisów.
Wnoszę do admina o skasowanie tego postu. Z góry dzięki

Ten post edytował Aztech 13.10.2004, 21:58:58
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: 16.09.2025 - 02:21