Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MYSQL wybranie wiersza w ktorym jest max
calebos
post
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
patryczakowy
post
Post #2





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
calebos
post
Post #3





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
patryczakowy
post
Post #4





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
maly_swd
post
Post #5





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 20:22