jancu
24.11.2012, 19:27:44
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
24.11.2012, 20:43:00
jancu
24.11.2012, 20:48:07
nie działa. problem dalej wystepuje
pitu
24.11.2012, 20:51:27
Pokaż swoje zapytanie, które zrobiłeś i nie działa.
jancu
24.11.2012, 20:57:09
SELECT DISTINCT art_id, DATA FROM koments GROUP DATA DESC LIMIT 8
pitu
24.11.2012, 21:13:33
Nie działa, ponieważ twoje zapytanie jest błędne. Do sortowania używa się ORDER BY.
Spróbuj:
SELECT DISTINCT (art_id), data FROM koments ORDER BY data DESC LIMIT 8
jancu
24.11.2012, 21:17:08
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
24.11.2012, 21:52:27
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
24.11.2012, 21:55:44
Powinno działać:
SELECT DISTINCT art_id, data FROM koments GROUP BY art_id ORDER BY data DESC LIMIT 8
jancu
24.11.2012, 22:04:36
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
25.11.2012, 10:41:38
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
25.11.2012, 10:48:52
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:
SELECT * FROM
(
SELECT * FROM `koments` ORDER BY DATA DESC
) AS my_table_tmp
GROUP BY art_id
ORDER BY DATA DESC LIMIT 8
thek
25.11.2012, 11:57:40
I właśnie o tym co zrobiłeś napisałem. Popatrz na mój post raz jeszcze

To co napisałeś to właśnie "odwrócenie" tabeli.
jancu
25.11.2012, 12:02:20
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.