![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 16.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
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:
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. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 371 Pomógł: 18 Dołączył: 23.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
może zamiast desc to asc?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 16.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 22:45 |