Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
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


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
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ć 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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 07:08