Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z unikalnymi rekordami
Forum PHP.pl > Forum > Bazy danych > MySQL
uhutaf
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?
ActivePlayer
a w polu primary trzymasz ilość postów w danym temacie?
uhutaf
W polu `primary` mam podany NUMER komentarza w danym temacie. Czyli dla piątego tematu mogę mieć komentarz pierwszy, drugi, trzeci, itd.
droslaw
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;
uhutaf
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ę biggrin.gif).
droslaw
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`)
uhutaf
Kilka prób i wszystko działa wink.gif.
  1. SELECT `id` FROM `tabela` GROUP BY `id` DESC ORDER BY `primary` DESC;



----

Twoim sposobem też wychodzi na to samo wink.gif. Dzięki.
Muszę poszukać czegoś o GROUP, bo nie korzystałem z tego nigdy...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.