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

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: 19.07.2025 - 13:08