Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z unikalnymi rekordami
uhutaf
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 14.08.2009

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


Witam.
Pragnę wyświetlić temat, w którym jest najwięcej komentarzy.
Mam taki o to kod:
  1. SELECT DISTINCT `id` FROM `tabela` ORDER BY `primary` DESC LIMIT 5;
Pole `primary` to numer komentarza w danym temacie, natomiast `id` to numer tematu.
Ta linijka skryptu według moich zamierzeń ma za zadanie znaleźć wszystkie unikalne tematy, sortując je od tych, które mają najwięcej komentarzy (`primary`).
Jednak działa to tylko do połowy, tzn. wyświetla unikalne numery tematów, ale za każdym razem w tej samej kolejności [obojętnie jak będę chciał je sortować].
Pomożecie?

Ten post edytował uhutaf 8.02.2012, 20:39:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
ActivePlayer
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


a w polu primary trzymasz ilość postów w danym temacie?
Go to the top of the page
+Quote Post
uhutaf
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 14.08.2009

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


W polu `primary` mam podany NUMER komentarza w danym temacie. Czyli dla piątego tematu mogę mieć komentarz pierwszy, drugi, trzeci, itd.
Go to the top of the page
+Quote Post
droslaw
post
Post #4





Grupa: Zarejestrowani
Postów: 98
Pomógł: 33
Dołączył: 10.05.2011
Skąd: Krak

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


Jeśli jest to tabela przechowująca komentarze a id to klucz obcy do tabeli z tematami zrób co takiego:
  1. SELECT count(`primary`) AS il_com, * FROM `tabela`
  2. GROUP BY `primary`
  3. ORDER BY il_com;


Ten post edytował droslaw 8.02.2012, 21:19:18
Go to the top of the page
+Quote Post
uhutaf
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 14.08.2009

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


Od początku, bo zaszło nie porozumienie.
Mam tabelkę, w której mam grupowane komentarze. Są 2 kluczowe pola -> `id` oraz `primary`.
W `id` trzymam numer tematu, do którego odwołują się komentarze. Może być kilka rekordów-komentarzy dla jednego id-tematu.
W `primary` mam numer komentarza w danym temacie (swoiste auto_increment). Może być kilka 'pierwszych' komentarzy - każdy z nich będzie w innym temacie.

I teraz chcę znaleźć wszystkie największe `primary`, ale takie, które nie będą z jednego tematu (jeżeli w jakimś temacie będzie 100 komentów, a w drugim 50, to mamy do pierwszego tematu aż 50 komentarzy, które będą miały większe `primary`, a tego nie potrzebuję (IMG:style_emoticons/default/biggrin.gif) ).
Go to the top of the page
+Quote Post
droslaw
post
Post #6





Grupa: Zarejestrowani
Postów: 98
Pomógł: 33
Dołączył: 10.05.2011
Skąd: Krak

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


Czyli chcesz pobrać ostatnie kometarze z różnych tematów tak?
Grupujemy po newsach i wybieramy największe primary:
  1. SELECT MAX(`primary`), `id` FROM `tabela`
  2. GROUP BY `id`

Wspominałeś jeszcze w pierwszym poście o sortowaniu według ilości komentarzy:
  1. SELECT MAX(`primary`), `id` FROM `tabela`
  2. GROUP BY `id`
  3. ORDER BY COUNT(`primary`)
Go to the top of the page
+Quote Post
uhutaf
post
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 14.08.2009

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


Kilka prób i wszystko działa (IMG:style_emoticons/default/wink.gif) .
  1. SELECT `id` FROM `tabela` GROUP BY `id` DESC ORDER BY `primary` DESC;



----

Twoim sposobem też wychodzi na to samo (IMG:style_emoticons/default/wink.gif) . Dzięki.
Muszę poszukać czegoś o GROUP, bo nie korzystałem z tego nigdy...

Ten post edytował uhutaf 8.02.2012, 21:59:45
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: 23.08.2025 - 19:02