Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie bez powtórzeń
Athlan
post 24.12.2010, 22:17:35
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Witam.

Mam tabelę (w przybliżeniu):
  • comment_id
  • comment_item
  • comment_date

Chciałbym wyciągnąć ostatnich 10 rekordów sortując po comment_date DESC, ale żeby comment_item się nie powtórzyło. Niestety, GROUP BY comment_item psuje całe sortowanie (bierze pierwszą napotkaną datę).

Wymyśliłem takie coś, ale nie jestem pewien złożoności obliczeniowej, która jest pewnie ogromna:
  1. SELECT c.*, (SELECT d.comment_date FROM cms_comments AS d WHERE d.comment_item = c.comment_item ORDER BY d.comment_date DESC LIMIT 0,1)AS comment_date_last
  2. FROM cms_comments AS c
  3. GROUP BY c.comment_item
  4. ORDER BY comment_date_last DESC
  5. LIMIT 0, 10

Katuję bazę danych? SELECT DISTINCT rozwiązałby mój problem? Jakbym musiał wówczas ułożyć optymalne zapytanie?

Ponoć DISTINCT wydajniejsze od ewentualnego GROUP BY
Cytat
When combining LIMIT row_count with DISTINCT, MySQL stops as soon as it finds row_count unique rows.


Z góry dzięki za odpowiedzi,
Athlan.


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Athlan
post 24.12.2010, 22:28:07
Post #2





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Gitara gra. MAX() działa dzięki GROUP - otrzymuję te same wyniki, co moim sposobem, który jest trywialny i rozłożony na czynniki pierwsze. Taki indeks już mam, więc jest w użyciu po EXPLAIN'ie.

Ale nie jestem pewien, czy się to czymś różni. W zasadzie rozpisałem MAX() na części pierwsze, stąd wynik powinien być taki sam. Ufam jednak mechanizmom bazy danych.

Propsy : )


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 19:12