Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mySQL] Ostatni rekord
Forum PHP.pl > Forum > Przedszkole
Nightwalker
Witam,
Jako że w zagadnieniach mySQL dopiero raczkuje zadam to banalne pytanie...
Jak sformułować zapytanie aby zróbiło ostatni rekord z danej tabeli?

Pozdravki winksmiley.jpg
FilleZill
Więc...Żeby wybrać z bazy danych jakiś rekord trzeba posłłużyć się operatorem SELECT. Składnia powinna wyglądać tak:
  1. SELECT pole1, pole2, polen FROM nazwa_tabeli WHERE warunek1 AND warunek2 ORDER BY nazwa_klucza rodzaj_sortowania LIMIT klucz_poczatkowy, ilosc_rekordów

* pole1, pole2, polen- określają nazwy pól, które serwer baz ma wysłać w wyniku, jeśli chce się otrzymać wszystkie wystarczy wpisać * (gwiazdkę).
* FROM nazwa_tabeli- to chyba najprostszy fragment, określa nazwę tabeli, z której mają być wybrane rekordy
* WHERE warunek1 AND warunek2- to warunek (warunki), wg których serwer ma przeszukiwać bazę. Można nie podać ich wcale i wtedy wynik będzie zawierał wszystkie rekordy z tabeli. Warunki można łączyć operatorami AND oraz OR oraz w nawiasy (tak jak wifw php)
* ORDER BY nazwa_klucza rodzaj_sortowania- określa według jakiego klucza posortowane mają być wyniki i w jakiej kolejności. Dostępne są dwa rodzaje sortowania ASC- rosnące i DESC- malejące
* LIMIT klucz_poczatkowy, ilosc_rekordów- określa ile wyników ma być zwrócone. Warto pamiętać, że ilosc_rekordow pokazuje ile ma być zwrócone rekordów od klucz_początkowy a nie jest to id klucza końcowego (częsty błąd).

Mam nadzieje że pomogłem cool.gif
SongoQ
@FilleZill Tym przykladem troche sie nie popisales. Ale przynajmniej opisales co i jak.

Jesli uzywamy ORDER BY wazne jest aby to bylo po polu ktore jest indexem. Jesli tak nie bedzie wydajnosc jest nie najlepsza. Kolejna rzecza stosowanie do tego LIMIT te znie najbardziej sie sprawdzi.

Najprostrzym przykladem dla zwrocenie najnowszego rekordu jest uzycie MAX() dla pola id - poniewaz pole id jest kluczem podstawowym i funkcja max na indeksach dziala "blyskawicznie". Oczywiscie przy malej liczbie rekordow nie ma roznicy ale dla wiekszej liczby mozna to zauwazyc.
Nightwalker
Dzięki, nie musiałeś mi całej składni tłumaczyć bo takie podstawy to znam winksmiley.jpg

Co do ostatniego rekordu, chciałem to zrobić jak najwydajniej, owszem mogłem dać sortowanie malejące i dać pętle for ale prościej (i pewnie szybciej) jest użycie przygotowanego do tego zapytania,

Dzięki winksmiley.jpg
SongoQ
Tak jak pisalem uzyj max() w zapytaniu
Nightwalker
  1. SELECT *
  2. FROM `counter` MAX(vid);


gdzie vid to podstawowy klucz auto_increment (tinyint)

zwraca:

  1. #1064 - Something is wrong in your syntax obok 'MAX(vid)' w linii 3


probowałem vid ująć w ' lub ` ale to nie pomaga, mógłbym prosić link do manuala tej funkcji?
SongoQ
Hehe widze ze jednak przyklad FilleZill nie nauczyl Cie.

  1. SELECT MAX(vid) FROM tebela
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.