Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błednie działające zapytanie (grupowanie, sortowanie)
Forum PHP.pl > Forum > Bazy danych > MySQL
piopix
Krotko wyjasnie budowe bazy i problem.
Mam trzy tabele:
klasyfikacja(idskoczek,ps,...) idskoczek jest unikatowym id skoczka, ps iloscia punktow przez niego zdobytych;
skoczkowie(idskoczek,idkraj,...) idkraj jest unikatowym id kraju,
kraje(idkraj,nazwakraju,...) chyba czytelne ;-).

Chce zrobic zapytanie ktore zsumuje ilosc punktow zdobtytych przez skoczkow kazdego kraju, a nastepnie posortuje powstala liste malejaco.
Z niewiadomych mi przyczyn problem pojawia sie gdy uzywam group by. Punkty sa wtedy blednie zsumowane, praktycznie zadna cyfra sie nie zgadza.

Moje zapytanie wejsciowe wyglada tak (tu jeszcze bez zamiany idkraju na nazwe i sortowanie, ale w momencie w ktorym juz sie blednie sumuje).

Kod
select skoczkowie.idkraj, klasyfikacja.ps from skoczkowie,klasyfikacja where klasyfikacja.idskoczek=skoczkowie.idskoczek group by idkraj;


Co robie źle?
sowiq
Ja bym to zrobił tak:
  1. SELECT kr.nazwakraju AS kraj, SUM(k.ps) AS ilosc_punktow
  2. FROM skoczkowie s
  3. LEFT JOIN klasyfikacja k ON (k.idskoczek = s.idskoczek)
  4. LEFT JOIN kraje kr ON (kr.idkraj = s.idkraj)
  5. GROUP BY kr.idkraj
  6. ORDER BY ilosc_punktow DESC
piopix
Wydaje mi sie ze twoj kod liczy ilosc zawodnikow z poszczegolnych krajow, a nie sumuje ich punkty.
Problem chyba polega na tym co zdefiniowales jako ilosc_punktow czyli ten kawalek:

Kod
COUNT(k.ps) AS ilosc_punktow


Count chyba zlicza elementy, a nie sumuje...

Dzięki wielkie, teraz sobie poradzilem. Sog.
sowiq
Cytat(piopix @ 4.03.2009, 14:14:39 ) *
Count chyba zlicza elementy, a nie sumuje...
Masz rację, pomyliłem się. Już poprawiłem.
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.