Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Kilka warunków i zapytań do jednej tabeli
Forum PHP.pl > Forum > Przedszkole
emil1702
Witam,

chcę zrobić zapytanie do bazy, które z tabeli riderpoints będzie pobierać najlepszego zawodnika kolejki, jak optymalnie wykonać to zapytanie?

struktura tabeli
  1. ID | IDRIDER | GAMEWEEK | STARTS | POINTS
  2. 1 | 1 | 1 | 2 | 3
  3. 2 | 2 | 1 | 5 | 4 < - - pobiera TO
  4. 3 | 3 | 2 | 3 | 1 < - - i TO


Próbowałem tak jak poniżej, ale może pobrać tylko jeden wynik, np. id a potrzebuje wszystko

  1. SELECT (
  2.  
  3. SELECT id
  4. FROM riderpoints
  5. WHERE gameweek =1
  6. ORDER BY points DESC
  7. LIMIT 1
  8. ) as col1 ,(
  9.  
  10. SELECT id
  11. FROM riderpoints
  12. WHERE gameweek =2
  13. ORDER BY points DESC
  14. LIMIT 1
  15. ) as col2 , (
  16.  
  17.  
  18. SELECT id
  19. FROM riderpoints
  20. WHERE gameweek =3
  21. ORDER BY points DESC
  22. LIMIT 1
  23. )
mmmmmmm
SELECT r.* FROM riverpoints r JOIN (SELECT gameweek, Max(points) points FROM riverpoints GROUP BY gameweek) x ON r.gameweek=x.gameweek AND r.points=x.points
emil1702
extra, dzięki wielkie smile.gif)

A jeszcze mam pytanie jak pobrać optymalnie imię i nazwisko z tabeli riders? Jak można zmodyfikować to zapytanie?:

  1. SELECT rp.id FROM riderpoints rp
  2. JOIN (SELECT gameweek, Max(points) points FROM riderpoints GROUP BY gameweek) x
  3. ON rp.gameweek=x.gameweek AND rp.points=x.points
  4. ORDER BY x.gameweek


Tak moze być?
  1. SELECT rp.id, r.name, r.surname, r.club, r.ksm, c.name AS 'club_name', c.city FROM riderpoints rp
  2. JOIN riders r ON r.id = rp.id
  3. JOIN club c ON c.id = r.club
  4. JOIN (SELECT gameweek, Max(points) points FROM riderpoints GROUP BY gameweek) x
  5. ON rp.gameweek=x.gameweek AND rp.points=x.points
  6. ORDER BY x.gameweek
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.