Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ostatnio komentowane problem
Forum PHP.pl > Forum > Bazy danych > MySQL
jancu
witam.
mam tabele komentarze:

id | id_artukulu | user_id | data | text

problem polega na tym jak wyciągnąć najnowsze komentarze, bez powtórzeń artykułów. jeśli ostatni artykół ma 10 komentarzy to jako 10 ostatnich pokazuje mi właśnie ten artykół.
pitu
Użyj:
Kod
SELECT DISTINCT
jancu
nie działa. problem dalej wystepuje
pitu
Pokaż swoje zapytanie, które zrobiłeś i nie działa.
jancu
  1. SELECT DISTINCT art_id, DATA FROM koments GROUP DATA DESC LIMIT 8
pitu
Nie działa, ponieważ twoje zapytanie jest błędne. Do sortowania używa się ORDER BY.

Spróbuj:
  1. SELECT DISTINCT (art_id), data FROM koments ORDER BY data DESC LIMIT 8
jancu
no i po tym tez nie dziala. wyswietla ostatnio komentowany artykół, a nastepnie 7 kolejnych, ale siedem ostatnich to jest jeden ponieważ miał kilkanaście komentarzy. Próbowałem już chyba wszystkiego i przeróżnych kombinacji. Efekt ciągle ten sam.
thek
Jako że zależy Ci na artykułach, to musi być grupowanie po id artykułu. Ale musisz w pierwszej kolejności mieć ustawione komentarze od najświeższego do najstarszego. Wtedy zadziała.
pitu
Powinno działać:
  1. SELECT DISTINCT art_id, data FROM koments GROUP BY art_id ORDER BY data DESC LIMIT 8
jancu
Po wykonaniu tego polecenia artykuły nie powtarzały się. Niby wszystko to o co mi chodziło, ale nie pokazuje komentarzy z dzisiaj. Ostatnie pokazane to wczorajsza data. Co może być nie tak?

Cytat
Jako że zależy Ci na artykułach, to musi być grupowanie po id artykułu. Ale musisz w pierwszej kolejności mieć ustawione komentarze od najświeższego do najstarszego. Wtedy zadziała.


jakiś kodzik można?
thek
Problemem jest to, że przy tym co zrobiłeś, do grupowania podeszły komentarze w kolejności od najstarszego do najmłodszego, czyli na odwrót niż trzeba. Wszystko dlatego, że group by wykonuje się PRZED order by, a pownno być PO. Wyjść jest kilka. Najprostsze rozwiązanie to we FROM koments "odwrócić" tabelę. A by to było cutkę optymalniej, to przykładowo możesz wyciągać najwyższą datę lub najwyższe id_komentarza dla danego artykułu.
jancu
po zamianie order i group miejscami wywala blad.

czy moglbys napisac kodzik jak to rozwiazac?

UPDATE:

Problem rozwiązałem tym oto sposobem, może komuś się przyda:

  1. SELECT * FROM
  2.  
  3. (
  4. SELECT * FROM `koments` ORDER BY DATA DESC
  5. ) AS my_table_tmp
  6.  
  7. GROUP BY art_id
  8.  
  9. ORDER BY DATA DESC LIMIT 8
thek
I właśnie o tym co zrobiłeś napisałem. Popatrz na mój post raz jeszcze smile.gif To co napisałeś to właśnie "odwrócenie" tabeli.
jancu
Twój post dał mi do myślenia. Pozdrawiam. Problem rozwiązany.
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.