Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> last() first()
psw779
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.03.2006

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


Witam!

Po prostu jestem w szoku,

buduję najprostsze zapytanie w którym chce użyć LAST lub FIRST i nie działa. Wersje serwera nowe, spokojnie powinno chodzić a tu zonk.

SELECT FIRST(galleries.id) FROM galleries

za to np.:

SELECT AVG(galleries.id) FROM galleries

śmiga aż miło.

Ma ktoś jakiś pomysł?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) A skąd Ty wytrzasnąłeś taką funkcję agregującą jak FIRST() ? Nie ma czegoś takiego... MAX, MIN, AVG, ale FIRST? (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
Go to the top of the page
+Quote Post
psw779
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.03.2006

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


zobacz tutaj:

http://www.w3schools.com/sql/sql_func_first.asp
Go to the top of the page
+Quote Post
sowiq
post
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Znajdź mi to w manualu do MySQL, bo to, co podałeś to jakiś Oracle jest (nawet nie napisali) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) W MySQL używa się MAX/MIN i ORDER BY.
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(psw779 @ 9.02.2009, 23:06:05 ) *

A ty tutaj:
http://bugs.mysql.com/bug.php?id=2020
Cytat
I wonder why there is no FIRST and LAST aggregate functions in MySql. Somebody told me
this impossible because MySql save data in B-tree and returned set is unordered.
Go to the top of the page
+Quote Post
Deusx
post
Post #6





Grupa: Zarejestrowani
Postów: 126
Pomógł: 2
Dołączył: 27.08.2006

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


Serwera OK, ale czy mysql nie jest stare ?
Go to the top of the page
+Quote Post
psw779
post
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.03.2006

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


no dobra, to teraz taka sytuacja:

jak za pomocą np. max wyciągnąć ostatnio dodany wierz na podstawie daty i czasu które są zawarte w dwóch różnych kolumnach?

nie da się przecież do max wsadzić dwóch argumentów (w moim przypadku date and time)
Go to the top of the page
+Quote Post
sowiq
post
Post #8





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(psw779 @ 9.02.2009, 22:58:00 ) *
jak za pomocą np. max wyciągnąć ostatnio dodany wierz na podstawie daty i czasu które są zawarte w dwóch różnych kolumnach?
Jeśli trzymasz datę w osobnym polu, a godzinę w osobnym, to najpierw polecam jakiś najprostszy kurs projektowania baz danych - nawet pojedynczych tabel.

Jeśli masz np. timestamp/date w polu, to robisz proste:
  1. SELECT * FROM tabela ORDER BY timestamp DESC LIMIT 1
i już masz najświeższy wpis.

Wariant z dwoma polami na datę i godzinę uznam za żart.
Go to the top of the page
+Quote Post
psw779
post
Post #9





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.03.2006

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


Nie będę teraz przebudowywał komuś całej bazy bo to po prostu nie ma sensu.

A kolega zamiast żartować zastanowił by się poważnie nad rozwiązaniem problemu. Tym bardziej, że przykład który podałem jest tylko podzapytaniem grubszego selecta.
Go to the top of the page
+Quote Post
sowiq
post
Post #10





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


W takim razie na pewno masz jakieś ID auto increment. Jeśli nie, to dodanie takiego pola nie zmieni Ci nic w bazie danych i w zapytaniach. Z każdym dodaniem nowego rekordu ID będzie zwiększane o 1, więc znalezienie najnowszego wpisu ograniczy się do znalezienia największego ID.

Dużo masz wpisów w tej tabeli?
Go to the top of the page
+Quote Post
psw779
post
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.03.2006

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


ponad 100 tysięcy,
z id była by prosta sprawa, zresztą ono już tam jest ale oprócz sortowania ja chcę jeszcze wypisać tą datę i czas z tabeli a tu już jest problem. Do tej pory było to realizowane osobnym zapytaniem w pętli php.
Go to the top of the page
+Quote Post
sowiq
post
Post #12





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


No to chyba logicznie patrząc od razu widać, że to, co napisałem powyżej da się łatwo zamienić na Twój przypadek:
  1. SELECT * FROM tabela ORDER BY id DESC LIMIT 1
Wykonaj to i będziesz miał wszystkie informacje o najnowszym wpisie.
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: 14.09.2025 - 16:13