[ Zok101 @ 16.02.2006. 13:36 ] @
Pozdrav

Imam sljedeće zapise u bazi:

Artikl-----Cijena----Dokument-----Datum
A--------10--------KA001--------1.6.2005 <--
A--------15--------KA004--------1.7.2005
B--------12--------KA004--------1.7.2005 <--
B--------15--------KA005--------15.7.2005
B--------13--------KA006--------1.8.2005
C--------10--------KA002--------15.6.2005 <--
...

Trebam query koji će izvući za svaki artikl samo zapis koji ima najstariji datum.

Može li mi netko pomoći?

Hvala unaprijed.





[ SmilieBG @ 16.02.2006. 13:48 ] @
Koji ti je format mysql polja za datum? Varchar, int, date..?

Ja licno volim da radim sa unix vremenom, (meni je) najlakse za racunanje :)

Poz,
Sale
[ Zok101 @ 16.02.2006. 13:50 ] @
Tip od datuma je datetime
[ SmilieBG @ 16.02.2006. 21:29 ] @
probaj:

Code:

SELECT * FROM tabela ORDER BY datum DESC limit 0,1


Ako je sve kako treba, mysql ce sortirati rezultat po datumu, gde je najveci prvi a limit 0,1 ce ti vratiti samo 1 zapis i to taj najveci...

Nije testirano :)

Poz,
Sale
[ _owl_ @ 16.02.2006. 23:38 ] @
Mozda
Code:

SELECT artikal, MIN(datum) FROM tabela GROUP BY artikal

[ Dejan Topalovic @ 17.02.2006. 07:42 ] @
@SmilieBG: On je trazio upit, koji ce mu vratiti za svaki artikl onaj zapis sa NAJSTARIJIM datumom. Tvoj upit dakle nece raditi kako je ocekivano.

@_owl_: Dobro rjesenje, ako on trazi samo artikl i najstariji datum, ali sta ako on zeli znati i cijenu i dokument od tog zapisa? Onda taj upit nece funkcionisati...

@Zok101: Mozda ovako:

Code:

select *
from tabela 
where (datum, artikl) IN(
      select min(datum), artikl
      from tabela
      group by artikl
)
[ SmilieBG @ 17.02.2006. 08:16 ] @
@Dejan: u pravu si, nisam lepo procitao :|

nested query je podrzan tek od verzije 5.0 mysql-a. resenje od Owl je ok, a ako mu trebaju i ostale kolone, morace da ih dopise u query.

Poz,
Sale
[ Dejan Topalovic @ 17.02.2006. 08:18 ] @
@SmilieBG: Ispravka: subselect je podrzan od verzije 4.1.*
[ _owl_ @ 17.02.2006. 14:33 ] @
Citat:

@_owl_: Dobro rjesenje, ako on trazi samo artikl i najstariji datum, ali sta ako on zeli znati i cijenu i dokument od tog zapisa? Onda taj upit nece funkcionisati...

Zar pre jedno mesec dana nije bila diskusija sa onim likom sto obozava TOP klauzulu u MSSQL-u da ako se promeni postavka problema moze da dodje i do promene resenja.
[ jablan @ 17.02.2006. 14:50 ] @
Citat:
_owl_: Zar pre jedno mesec dana nije bila diskusija sa onim likom sto obozava TOP klauzulu u MSSQL-u da ako se promeni postavka problema moze da dodje i do promene resenja.

Pa postavka problema je da se izvuče ceo slog:
Citat:
Zok101: Trebam query koji će izvući za svaki artikl samo zapis koji ima najstariji datum.
[ _owl_ @ 17.02.2006. 22:09 ] @
Izgleda da nisi pazljivo citao, poenta je da postoji samo jedan slog sa najstarijim datumom pa zato moze da se koristi GROUP BY a ne da li se selektuju sva polja ili ne (bas volim likove koji vole da podjebavaju na sitno).
[ Dejan Topalovic @ 18.02.2006. 15:22 ] @
@_owl_: Sorry, ako mislis da ja ili neko drugi podjebavamo... Meni to stvarno nije namjera...

Napisao sam da tvoje rjesenje radi, ukoliko on zeli samo artikl i min(datum), ali to nije CITAV zapis, koji sadrzi i ostala polja. Zapis/record/row podrazumijeva sva polja u njemu i komentari su se odnosili na to...
[ _owl_ @ 18.02.2006. 20:52 ] @
Nisam mislio na tebe.
[ Zok101 @ 21.02.2006. 13:54 ] @
Dečki, hvala vam na trudu.
Ispričavam se što nisam odgovarao, ali savjeti su pomogli.

Trebao sam izdvojiti cijele zapise.

Izlaz sam dobio sljedećim upitom:

Code:
select a.artikl, a.dokument, max(a.mpc) as mpc, a.datum from kalk a 
where not exists (select b.* from kalk b where b.artikl = a.artikl and b.datum <  a.datum) group by a.artikl, a.datum, a.dokument


Pozdrav