Citat:
CandyMan: Tvoja "SQL konstrukcija" je proizvod minimalnog vremena provedenog u razmišljanju
Prvo, ja
ne namecem nikome svoje resenje kao konacno i definitvno.
Naravno da je vreme veoma bitno u savremenom IT svetu. A koliko vidim ti non stop ponavljas jedan te isti query u razlicitim kontekstima , pa covek ima utisak da nisi dalje odmakao od te 1996 godine kada si prvi put upamtio smisleni zadatak tadasnjeg profesora. Ko zna, mozda ti je toliko i trebalo od tad pa do danas da shvatis sta su correlated subqueries, i zasto tvoj query vraca one rezultate koje zaista vraca.
Vec sam ti rekao da je tvoja konstrukcija duplo sporija od one koju sam ja predstavio, to su cinjenice.
A ono sto si pomenuo da ce sporije raditi na tabelama sa par hiljada redova, tada si me zaista slatko nasmejao.
Posto vidim da analiziras moju SQL konstrukciju bez ikakvog komentara, ja cu malo baciti pogled na delove tvog SQL koda.
Citat:
CandyMan
Prvo predavanje predmeta "Strukture i baze podataka", profesor dr Veljko Malbaša, 1996. godina, pitanje za sve studente:
"Iz tabele sa radnicima i platama, izlistati podatke za prvu trojicu sa najvećom platom."
Kada se malo preformuliše dobije se:
"Izlistaj sve one koji po plati iznad sebe imaju manje od tri coveka - nijednog, jednog ili dva čoveka".
Profesor je sasvim jasno postavio pitanje, zasto si ga dodatno preformulisao?
Citat:
Rešenje:
Code:
select radnik, plata
from radnik r
where 3 > (select count(*)
from radnik r2
where r2.plata > r.plata)
order by 1,2
Kada si ga vec preformulisao na komplikovaniji nacin, tj izlistaj sve one koji po plati iznad sebe imaju manje od tri coveka, zasto nisi kao uslov postavio
Code:
where
(select count(*)
from radnik r2
where r2.plata > r.plata) < 3
vec
Code:
where 3 > (uslov)
ovo ?
Dalje, zasto si u ORDER klauzuli postavio redne brojeve kolona a ne njihove nazive?
I na kraju, zanimalo bi me kako bi postojeci query modifikovao tako da vraca tacno poslednja 2 pojavljivanja Obj, ali sa dodatnim uslovom da se Obj pojavio u tabeli najmanje 2 puta ?
Pozdrav
[Ovu poruku je menjao branimir.ts dana 28.12.2005. u 11:55 GMT+1]