Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zapytanie grupujace + pola z poza GROUP BY
BartT
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.06.2004

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


Proszę o pomoc w skonstruowaniu (i zrozumieniu jak to się robi) zapytania sql które uzupełni kwerendę agregującą o inne dane na temat rekordów będących wynikiem tej agregacji.
Mam 2 tabele: dystanse (półmaraton, 10km, itd.) oraz wyniki zawodnika na poszczególnych dystansach.
Chcę znaleźć najlepsze wyniki dla każdego z dystansów.
Kwerenda grupująca po dystansach z funkcją agregująca min(czas) musi być oparta na danych z więcej niż 1 tabeli powiązanych relacją LEFT JOIN.
Taka kwerenda daje te najkrótsze czasy (z funkcji min(*) w klauzuli SELECT) oraz pola z klauzuli GROUP BY (w tym wypadku dystans).
Nie potrafię natomiast uzupełnić tego zestawienia o identyfikatory rekordów dla których znaleziono te najkrótsze czasy oraz inne pola z tabeli dowiązanej przez JOIN (tabela dystansów).
Chodzi o to, że jeśli do klauzuli SELECT dodam coś co nie jest ani argumentem funkcji agregującej ani parametrem grupowania z klauzuli GROUP BY to w wynikach pojawia się w tym polu przypadkowa (a w każdym razie błędna) wielkość.

Mam taki kod:
  1. SELECT
  2. `results`.user, `races`.raceTypeId, `raceSelection`.nominalDistance,
  3. min(`results`.time) AS personalBest,
  4. count(*) AS numberOfResults
  5.  
  6. /*
  7. Potrzebne są także dodatkowe poniższe pola:
  8.  
  9. `results`.resultId, (identyfikator rekordu z najkrótszym czasem)
  10. `competitions`.name, (nazwa i data zawodów kiedy w których osiągnięto ten najlepszy wynik)
  11. `competitions`.date
  12.  
  13. ale w ten sposób to nie ma prawa działać :-(
  14. */
  15.  
  16. FROM
  17.  
  18. `results`
  19. LEFT JOIN `races` USING (raceId)
  20. LEFT JOIN `raceSelection` USING (raceSelectionId)
  21. LEFT JOIN `competitions` USING (competitionId)
  22.  
  23. GROUP BY `results`.user, `races`.raceTypeId, `raceSelection`.nominalDistance
  24.  
  25.  


Pozdrawiam
Bart
Go to the top of the page
+Quote Post

Posty w temacie


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: 22.08.2025 - 22:29