Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie po group by
Forum PHP.pl > Forum > Bazy danych > MySQL
cudny
Witam

Mam proste zapytanie:

  1. SELECT DISTINCT(id), sum(ilosc) FROM zamowienia GROUP BY id ORDER BY ilosc DESC


Zwraca mi ilości dla każdego ze sprzedanych artykułów od początku istnienia bazy.
Chodzi o to aby wyciągnąć, który z nich był najczęściej kupowany.
Ogólnie zapytanie działa tylko zabrakło mi pomysłów w jaki sposób to posortować.
Przy order by ilosc desc wychodzą mi głupoty (pewnie sortuje w/g pierwszego napotkanego pola i resztę ignoruje).
Gdy daję order by sum(ilosc) desc MySQL wywala mi błąd.

Tak więc - jak to posortować najlepiej z opcją desc ?

pzdr

Jeśli ktoś zna odpowiedź to bardzo proszę.
Oczywiście poradziłem sobie dzięki array_multisort(); ale nurtuje mnie to...
Wiem, że trzeba użyć podzapytania i było by to najprostsze ale tutaj nie dość, że jest distinct to jeszcze sum.

pzdr
kitol
w bazie możesz posortować przez ORDER BY SUM(ilosc) DESC, lub ORDER BY 2 DESC (sortuje po drugiej kolumnie)
Mchl
Po co Ci naraz DISTINCT i GROUP BY? Samo GROUP BY powinno wystarczyć.
cudny
Faktycznie nie potrzebne jest distinct, grupowanie daje od razu zamierzony efekt, mój błąd.
Natomiast order by sum(ilosc) desc wywala błąd tak jak mówiłem ale za to order by 2 desc rozwiązało całkowicie mój problem.

W rezultacie:
  1. SELECT id, sum( ilosc ) FROM zamowienia GROUP BY id ORDER BY 2 DESC


Dzięki za sugestie.
2 plusy

pzdr
Mchl
Trzeba było alias zastosować winksmiley.jpg
Kod
SELECT id, sum( ilosc ) AS sumIlosc FROM zamowienia GROUP BY id ORDER BY suymIlosc DESC
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.