Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z prawidłowym warunkiem
Forum PHP.pl > Forum > Bazy danych > MySQL
Aztech
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 sad.gif
popbart
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
Aztech
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
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-2024 Invision Power Services, Inc.