Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> sortowanie po group by
cudny
post
Post #1





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


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

Ten post edytował cudny 5.12.2009, 00:12:08
Go to the top of the page
+Quote Post
kitol
post
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


w bazie możesz posortować przez ORDER BY SUM(ilosc) DESC, lub ORDER BY 2 DESC (sortuje po drugiej kolumnie)
Go to the top of the page
+Quote Post
Mchl
post
Post #3





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Po co Ci naraz DISTINCT i GROUP BY? Samo GROUP BY powinno wystarczyć.
Go to the top of the page
+Quote Post
cudny
post
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


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
Go to the top of the page
+Quote Post
Mchl
post
Post #5





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Trzeba było alias zastosować (IMG:style_emoticons/default/winksmiley.jpg)
Kod
SELECT id, sum( ilosc ) AS sumIlosc FROM zamowienia GROUP BY id ORDER BY suymIlosc DESC
Go to the top of the page
+Quote Post

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:00