SQL ispis iz baze

Pozdrav,

imam tabeltu u bazi sa sljedecim poljima:

id , ime , datum (formata 2014-10-11 17:00:00), polje1 , polje2

Npr.

Imam uneseno u bazu

1 ime1 | 2014-10-11 17:00:00 | nesto1 | nesto2
2 ime2 | 2014-10-11 17:00:00 | nesto1 | nesto2
3 ime3 | 2014-10-11 17:00:00 | nesto1 | nesto2
4 ime4 | 2014-10-13 14:00:00 | nesto1 | nesto2

Imam neki limit ispisa npr 4 (DESC LIMIT 0,4) …

Kako napravit da prikazuje samo noviji datum…bez obzira na limit ispisa od 4. Znaci ako postoji jedna stavka sa novijim datumom da ostale 3 koji su datumski starije ne prikazuje…

Nadam se da sam uspio objasnit :smile:

Hvala unaprijed

LP

select * from TABLICA order by datum desc, tj. ako si mislio moze i ovo select top 2 * from STUDENTS order by datum desc, ako hoces gornja 2 rez.

edit: evo i slika http://imgur.com/jQEDtzG

Mozda ovako:

SELECT TOP 4 * FROM Upisi ORDER BY Datum DESC ;

Neznam da li ste me skuzili :smiley:

Mozda sam ja krivo objasnio
Znaci na stranici mi se trenutno ispisuje 4 stavke…3 imaju stari datum i jedna ima novi datum…ja bi htio da ispisuje samo novi datum… bez obzira koliki je limit ispisa…

znaci ti bi da ima limit od recimo 4 ispisa, ali ispise se 1? :smiley: mislim da je to malo kontradiktorno

Gdje tu onda logika ?Vuces 4 stavke iz baze, a treba ti samo jedna :smiley:
Sta ces uraditi sa ostala 3 ?

U cijeloj prici nije bitan broj ispisa nego noviji datum…

SELECT * FROM tabela ORDER BY datum DESC LIMIT 1 

kako si opisao

Ili ovako:

SELECT TOP 1 * FROM tabela ORDER BY datum DESC;

Kontam da njemu treba nešto kao:

SELECT *, MAX(datum) FROM tabela ORDER BY datum DESC LIMIT 1

što daje najnoviji zapis, bez obzira na limit. Ali ako želiš da ti daje sve rezultate koje pripadaju najnovijem datumu, onda je malo kompleksniji upit

SELECT * FROM tabela WHERE datum > (SELECT date(max(datum)) FROM  tabela) LIMIT 4

izdvojio sam samo datumski deo i stavio znak > kako bi dobio sve rezultate koji su u toku tog dana. Možeš olakšati tako što ćeš u posebnu kolonu čuvati datum, a u posebnu vreme i ubrzati tako što ćeš koristiti view umesto ugnježdenih upia, ali to je već za detaljisanje.

1 Like

Treba ti ovo:

SELECT * FROM `tabela` WHERE date(datum) in (select max(date(datum)) from `tabela`) order by datum desc

I pokazivat će ti sve unose sa najnovijim datumom u bazi (ajmo reć da ih ima 10 sa današnjim datumom).

A ako želiš ograničiti broj najnovijih prikaza (recimo posljednjih 5 od ukupno njih 10 sa današnjih datumom):

SELECT * FROM `tabela` WHERE date(datum) in (select max(date(datum)) from `tabela`) order by datum desc limit 5
1 Like

Eto, ti odgovorio dok ja pisao… :smiley:

Hvala puno svima!

Sad idem probat to složit, mislim da su tocna rjesenja od @dmitrecic i @snisson Hvala Vam :smiley:

Lp

1 Like