Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pierwszy/ostatni element w tableli
Forum PHP.pl > Forum > Bazy danych > MySQL
umatik
jak mam zadac pytanie zeby otrzymac ostatni badz pierwszy element z tablicy?
nospor
jesli masz id i jest ono autoincrement:
  1. SELECT id
  2. FROM tablica ORDER BY id ASC LIMIT 1

asc - pierwszy
desc - ostatni
TomASS
Ostatni? to zależy jak się je posotruje? smile.gif Czy ostatni dodany, czy ostatni po nazwie, generalnie to:

pierwszy:
  1. SELECT *
  2. FROM tabele ORDER BY Identyfikator LIMIT 1;


ostatni:
  1. SELECT *
  2. FROM tabele ORDER BY Identyfikator DESC LIMIT 1;



--------edit--------
@nospor: jak zwykle szybszy - tym razem o ułamki sekund smile.gif
umatik
nie no za pomoca limit to jest jasne ale jak mam wybrac ostatni/pierwszy index tak aby potem mozna to bylo zastosowac w zlaczeniach?
kszychu
  1. SELECT MAX(ID) AS ostatni, MIN(ID) AS pierwszy
  2. FROM tabela
umatik
pomizszy kod jest oczywiscie niepoprawny ale ilustruje sytuacje o ktora mi chodzi

  1. SELECT MAX( A.id ) AS 'maxA', A.temat, MAX( I.id ) AS 'maxI', I.temat
  2. FROM informacje I, aktualnosci A
  3. WHERE A.id = maxA AND I.id = maxI
TomASS
Nie za bardzo kumam :/ Dlaczego nie może być tak jak Ci proponujemy?
umatik
dlatego ze chce za jednym pytaniem pobrac ostatnia Informacje i ostatnia Aktualnosc
TomASS
Aha, to masz dwie tablice.....

Czy te tablice są takie same? (jeśli tak, to dlaczego nie zrobisz z nich jednej tablicy)

Rozumiem, że chcesz wybrać jeden najświeższy rekord z tablicy Informacje i drug z tablicy Aktualności.

Niestetety w takim wypadku przychodzi mi tylko do głowy użycie dwóch zapytań.
umatik
ej no nie wirze ze nie mozna tego zrobic za pomoca jednego pytania...
SongoQ
Mozna np z podzapytaniem, bo inaczej 2 wartosci z funkcji agregacji i pola nie zwrocisz, czyli cos takiego jesli Ci o to chodzi.

  1. SELECT C.maxA, C.maxI, B.temat
  2. FROM (SELECT MAX( A.id ) AS maxA, A.temat, MAX( I.id ) AS maxI
  3. FROM informacje I, aktualnosci A
  4. ) C, informacje B WHERE C.maxI = B.id


Pelecam funkcje max niz sortowanie, chyba wiadomo dlaczego algorytmy wybierania najwiekszej liczby sa szybsze od sortowania, przy indeksach sie to troche wyrownuje. Ale to juz zalezy od reszty warunkow i pol.
TomASS
Cytat(SongoQ @ 2005-09-09 21:00:44)
  1. SELECT C.maxA, C.maxI, B.temat
  2.  
  3. FROM (SELECT MAX( A.id ) AS maxA, A.temat, MAX( I.id ) AS maxI
  4.  
  5. FROM informacje I, aktualnosci A
  6. ) C, informacje B WHERE C.maxI = B.id

czy gdzieś nie powinno być AS C i AS B ?
Wygląda na to, że inaczej niż z pod zapytanie se ne da.
SongoQ
Cytat
czy gdzieś nie powinno być AS C i AS B ?

Bazy dopuszczaja stosowanie AS po tabelach lub zbiorach ale to jest niezalecane. Juz nie pamietam w jakiej bazie, ale slowo AS po tabeli nie przechodzi.
Balas
Dodam ze dopiero ucze sie mysqla tongue.gif

a wiec jak przypisac ostatnia wartosc z tabeli do zmiennej questionmark.gif
SongoQ
http://pl.php.net/manual/pl/function.mysql-fetch-array.php
Tam masz wszystko mad.gif
FiDO
Cytat(DeyV @ 2005-09-09 23:33:53)
A jednak da się, da...
[...]

MAX-CONCAT trick jest dosc niewydajny, wiec nie zaleca sie jego stosowania. Mozna to zrobic lepiej.. pozwol, ze bezczelnie podlinkuje swojego posta z konkurencyjnym rozwiazaniem winksmiley.jpg

http://forum.php.pl/index.php?showtopic=30...ndpost&p=175959

Rowiazanie oczywiscie nie jest moje.. ja je tylko znalazlem i zapamietalem smile.gif
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.