Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] GROUP BY i sortowanie desc
Forum PHP.pl > Forum > Przedszkole
Patman
Potrzebuję pomocy w zbudowaniu zapytania.
Tabela posiada wpisy z forum. Posiada kolumny id, autor, temat (do którego wątku należy wpis), tekst, date. Chcę wyświetlić tabelę z wszystkimi tematami, a obok nazwy tematu ma być ostatni wpis w danym temacie (wraz z autorem i datą). Czyli taka informacja: [TEMAT] ostatni wpis [skrócony tekst] przez [autor] dnia [data + godzina]
Mam coś takiego:
  1. SELECT id, tekst, temat, date, autor FROM wpisy GROUP BY temat ORDER BY date DESC

Powstaje mi lista tematów, ale z pierwszym wpisem w danym temacie, a chciałbym ten z ostatnią datą.
Co dopisać do ORDER BY, aby wybrał to co potrzebuję?
U mnie skrypt jest nieco bardziej rozbudowany, bo korzystam z kilku tabel.
Mefiuu
nie czasem zamiast
  1. ORDER BY date DESC
to dać
  1. ORDER BY date ASC
? winksmiley.jpg
jacusek
może zamiast desc to asc?
Patman
To czy na końcówce dam ASC czy DESC, spowoduje tylko posortowanie listy tematów pod względem ostatniej aktywności.
Oto moja przykładowa tabela:
|id| autor | temat | tekst | date |
|1 | Ala | Ala ma kota | Ala ma | 09:00:00 2010-01-01 |
|2 | Kot | Ala ma kota | kota | 09:30:00 2010-01-01 |
|3 | Ala | Ala ma kota | a kot ma | 10:05:00 2010-01-01 |
|4 | Kot | Ala ma kota | Alę | 10:20:00 2010-01-01 |
|5 |Ewald | Kot nie żyje| Kot zmarł| 00:00:00 2010-01-02 |

Chciałbym wyświetlić taką informację:
Na forum:
Kot nie żyje Ostatni wpis: "Kot zmarł" o 00:00:00 dnia 2 stycznia 2010 przez Ewald.
Ala ma kota Ostatni wpis: "Alę" o 10:20:00 dnia 1 stycznia 2010 przez Kot.

A przez moje zapytanie uzyskuję jedynie:
Kot nie żyje Ostatni wpis: "Kot zmarł" o 00:00:00 dnia 2 stycznia 2010 przez Ewald.
Ala ma kota Ostatni wpis: "Ala ma" o 09:20:00 dnia 1 stycznia 2010 przez Ala.
thek
Problemem tutaj jest to, że GROUP BY wykonuje się przed ORDER BY. Przez to GROUP BY wypluwa na łączeniu temat o najniższym id napotkanym. Da się to zrobić na kilka sposobów. Najprostsze to - pchnąć sortowanie tabeli malejąco DESC do podzapytania i to je grupować lub próbować operować funkcją max.
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.