Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MYSQL wybranie wiersza w ktorym jest max
Forum PHP.pl > Forum > Bazy danych > MySQL
calebos
Czesc

Mam tablice gdzie chcialbym otrzymac tylko te wiersze z najswiezsza data Zmiany

Data Zmieniono
2009-01 | 2009-05-01 14:54:00
2009-01 | 2009-05-01 14:56:00
2009-01 | 2008-01-01 15:33:00
2009-02 | 2009-05-04 14:34:55
2009-02 | 2009-05-04 14:55:55
itp


Uzylem czegos takiego:
  1. SELECT * FROM ( SELECT DATA,Zmnieniono FROM tabela ORDER BY DATA,Zmieniono DESC) GROUP BY DATA


Otrzymuje poprawne wyniki tzn niepowtarzajace sie Daty z najnowsza Zmieniono. Chcialem sie upewnic czy ten sposob jest ok i nie zwroci w jakims (nie znanym mi na ten czas) przypadku nieoczekiwanych rezultatow ?
patryczakowy
tylko moim zdaniem niepotrzebnie dwa selecty
  1. SELECT DATA,Zmnieniono FROM tabela GROUP BY DATA ORDER BY DATA,Zmieniono DESC

W powyższy sposób powinien dać taki sam wynik
calebos
Hah wlasnie ze nie daje. Wydaje mi sie ze group by bierze pierwszy kolejny wiersz w zaleznosci od kolejnosci stad moje wczesniejsze sortowanie i zastosowanei grupowania dopiero na tym wyniku.
patryczakowy
No to trzeba zastosować HAVING
  1. SELECT DATA,Zmnieniono FROM tabela GROUP BY DATA HAVING "Warunek wybierający najnowszą datę" ORDER BY DATA,Zmieniono DESC

tylko zastanawiam się jaki warunek tu walnąć?

O może tak zadziała
  1. SELECT DATA,Zmnieniono FROM tabela GROUP BY DATA HAVING Zmieniono = MAX(Zmieniono) ORDER BY DATA,Zmieniono DESC
maly_swd
hmm a cos takiego?
  1. SELECT DATA,max(Zmnieniono) AS Zmieniono FROM tabela GROUP BY DATA ORDER BY DATA,Zmieniono DESC


wszystkie pola sa obiete funkcjami agregujacymi (chyba sie to tak nazywa).

grupujesz po dacie- wiec zawsze bedzie inna data i dla tej daty podaje Ci max Zmieniono
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.