[ gleda @ 17.02.2009. 12:15 ] @
Imam dve tabele VOZILO i POSEDUJE

U tabeli VOZILO ima REG_BROJ
U tabeli POSEDUJE ima DOZVOLA , REG_BROJ ,DATUM , povezane su tabele preko REG_BROJ - a .

Treba da napravim pogled koji prikazuje REG_BROJ vozila i dozvolu vlasnika ( DOZVOLA ) .

Posto ima vise DOZVOLA na neki REG_BROJ ja treba prema DATUM-u da odredim koje su najnovije i samo te da prikazem , to jest trenutne vlasnike tog REG_BROJA ( vlasnik vozila ) .


[ alexis87 @ 17.02.2009. 14:16 ] @
Evo pogledaj ovde http://en.wikipedia.org/wiki/Select_(SQL) u delu Result limits
Tako ogranici na samo jedan rezultat, samo predhodno poredjaj datume


[ gleda @ 17.02.2009. 14:38 ] @
Hvala alexis87 na wiki ima interesantnih stvari
ali jos nisam provalio kako da resim :>

Poenta je da neko VOZILO ima REG_BROJ a da je to vozilo imalo ranije vlasnike , da bi se nasao zadnji vlasnik gleda se DATUM zadnji .

Primer tabele >

REG_BROJ BR_DOZVOLE DATUM
FO2341 --- BA789256--- 15-mar-84
FO2341 --- FF849583--- 20-dec-89
JJ3847 --- BA789256--- 27-aug-93
JJ3847 --- HA928375--- 17-may-87
JJ3847 --- HD543235--- 17-may-85
JS2938 --- HD293847--- 02-mar-75
JS2938 --- IA192837--- 15-apr-83
OZ8347 --- FF849583 --- 15-sep-91
PA9485 --- GG847264 --- 13-mar-96
PA9485 --- UJ203954 --- 31-mar-94
PP3958 --- HA385767 --- 08-aug-95

po ovome se vidi da isti REG_BROJ ima dve BR_DOZVOLE ali datumi su razliciti , ja treba da uzmem noviji datum i da ubacim kolonu u pogledu koja ce prikazati koliko su ta kola ( VOZILO ) imala vlasnika .

Hvala na svakoj pomoci
[ alexis87 @ 17.02.2009. 14:45 ] @
Pa samo grupisi po registarskom broju i onda ces za svaki registarski broj imati dozvolu i taj jedan datum, ako ogranicis na jedan rezultat
[ alexis87 @ 17.02.2009. 15:42 ] @
Ovako odprilike nesto trebas da napises

select reg_broj, br_dozvole, datum from tabela t
where datum in (select datum from tabela t2
where t.reg_broj = t2.reg_broj and t.br_dozvole = t2.br_dozvole
order by datum desc
fetch first 1 rows only)

Javi jel uspelo :)
[ jablan @ 17.02.2009. 15:52 ] @
Probaj vako:
Code:
select d1.*
from dozvole d1
left join dozvole d2 on d1.reg_broj = d2.reg_broj and d1.datum < d2.datum
where d2.reg_broj is null
[ gleda @ 17.02.2009. 19:32 ] @
Upalio je jablan - ov predlog .
I alexis87 predlog je dobar ali nesto mi fetch nece .

code radi kao sat

Code:
select d1.REG_BROJ , d1.BR_Dozvole , d1.DATUM
from POSEDUJE d1
left join POSEDUJE d2 on d1.reg_broj = d2.reg_broj 
and d1.datum < d2.datum
where d2.reg_broj is null


Ostalo je jos samo ubaciti jos jednu kolonu koja pokazuje koliko je bilo vlasnika jednog vozilo .
Teorijski to znaci da treba prebrojati koliko ima dozvola ( BR_DOZVOLE ) za neki REG_BROJ .

Ima li nekih predloga :>
[ alexis87 @ 17.02.2009. 20:09 ] @
Ne raditi ti fetch zato sto se to koristi u db2, a na onom linku sto sam ti dala imas kako se gde koristi (razlikuje se malo) a za ovo prebrojavanje

select reg_broj, count(*)
from tabela
group by reg_broj


[ gleda @ 17.02.2009. 20:44 ] @
Da izvini tek sam sad snimio to za fetch.

Kako bi ja to uglavio u moj code u prethodnom postu .
Svrha svega ovoga je da napravim VIEW koji bi pokazivao vozacku dozvolu i registrski broj vozila kao i broj prethodnih vlasnika tog istog vozila .
[ alexis87 @ 17.02.2009. 21:26 ] @
create view pogled
as
select tabela1.reg_broj, br_dozvole, datum, broj_dozvola
from
(select d1.REG_BROJ , d1.BR_Dozvole , d1.DATUM
from POSEDUJE d1
left join POSEDUJE d2 on d1.reg_broj = d2.reg_broj
and d1.datum < d2.datum
where d2.reg_broj is null) as tabela1,
(select reg_broj, count(*) broj_dozvola
from tabela
group by reg_broj) as tabela2
where tabela1.reg_broj = tabela2.reg_broj
[ gleda @ 18.02.2009. 10:19 ] @
Hvala , radi super
[ jablan @ 18.02.2009. 10:20 ] @
Možda vako:
Code:
select d1.reg_broj, d1.datum, count(*)
from dozvole d1
left join dozvole d2 on d1.reg_broj = d2.reg_broj and d1.datum < d2.datum
inner join dozvole d3 on d1.reg_broj = d3.reg_broj
where d2.reg_broj is null
group by d1.reg_broj, d1.datum
[ gleda @ 18.02.2009. 22:13 ] @
ok , moze i tako .
Isprobao sam radi .
Samo treba malo da ga izmenim posto mi treba VIEW