Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> GROUP BY, MAX()
wojckr
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 6.05.2007
Skąd: Wrocław

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


Witam,
mam taką tabelę

id | id_obiektu | wartosc
---------------------------
0 | 0 | a_id0
1 | 0 | b_id1
2 | 1 | c_id2
3 | 2 | d_id3
4 | 2 | e_id4
5 | 2 | f_id5

Chcę pogrupować wynik w zbiory według id_obiektu i aby w kolumnie "wartość" pokazały się wartości (a_id0, b_id1...) przy największym id w grupie i aby było posortowane malejąco według max(id).
Czyli:
id | id_obiektu | wartosc | MAX(id)
---------------------------
5 | 2 | f_id5 | 5
2 | 1 | c_id2 | 2
1 | 0 | b_id1 | 1

Próbuję tak:
  1. SELECT *,MAX(id) FROM tabela GROUP BY id_obiektu ORDER BY MAX(id) DESC


i otrzymuję ładnie posorowane malejąco od największego id w grupie ( MAX(id) ), ale w kolumnie "wartość" otrzymuję wartości dla minimalnego id i tak samo id jest najmniejsze w grupie, czyli:

id | id_obiektu | wartosc | max(id)
------------------------------------
3 | 2 | d_id3 | 5
2 | 1 | c_id2 | 2
0 | 0 | a_id0 | 1

Częściowo udało się to zrobić z DESC na końcu
  1. SELECT *,MAX(id) FROM tabela GROUP BY id_obiektu DESC

bez ORDER BY sortuje według id_obiektu i podaje najwieksza wartosc w grupie, ale po dodaniu ORDER BY (które teoretycznie powinno odnosić się do zbioru wynikowego), powstaje jeszcze znowu to samo sie dziej.

Inaczej, może bardziej obrazowo: mamy wynik w grupach (jakiś wiersz reprezentuje grupę), i chcemy, aby reprezentantem grupy był rekord z najwiekszym id w tej grupie i, aby wszystko było posortowane według id malejąco.

Z góry dzięki za pomoc. Nie moge sobie z tym poradzić chyba od x godzin..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


  1. SELECT * FROM (SELECT * FROM tabela ORDER BY id DESC) AS tmp GROUP BY id_obiektu ORDER BY id DESC;


Edit: zapomniałem o sortowaniu wyniku...

Ten post edytował nevt 11.03.2008, 11:14:56
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 - 20:05