Prvo me interesuje nesto u vezi join-iranja
Radim u MSDE-u i interesuje me kako je bolje da se pise query prilikom joiniranja.
Evo primera:
U jednoj tabeli se nalaze radnici i njihovi podaci
Radnik
---------------------------------------------------
sifraRadnika
imeRadnika
sifraMestaStanovanja
adresa
---------------------------------------------------
dok je druga tabela cuva podatke o mestima
Mesto
---------------------------------------------------
sifraMesta
imeMesta
---------------------------------------------------
Sad ukoliko bi hteo da join-iram mesta sa radnicima pisao bi
SELECT * FROM Radnik INNER JOIN Mesto ON Mesto.SifraMesta = Radnik.sifraMestaStanovanja
i ovo bi radilo lepo ali sta ako hocu da ucitam radnike koji su na primer iz nekog mesta recimo beograd (neka je onda sifra 11000)
onda bih pisao sledeci upit
SELECT * FROM Radnik INNER JOIN Mesto ON Mesto.SifraMesta = Radnik.sifraMestaStanovanja
WHERE sifraMestaStanovanja = 11000
ili mozda ovako
SELECT * FROM
Radnik INNER JOIN
(SELECT * FROM Mesto WHERE sifraMesta = 11000) AS M
ON M.SifraMesta = Radnik.sifraMestaStanovanja
sta je bolje od ova dva upita pisati i kada? Znam da je pitanje relativno ali mene interesuje prvenstveno praksa drugih.
Drugo sto me interesuje je jedno logicko resenje.
Uvek su mi bili problem podaci koji se vezuju za vreme tj. ni danas nisam siguran kako ih resavam a problem je u sledecem
neka je opet u pitanju ona tabela Radnik
e sad problem je sta da radim sa siframa radnika koji moraju biti jedinstveni ali jedinstveni na nivou godine tj. uvek sifraRadnika ostaje ista ali podaci se tokom godine menjaju za radnika pa se na pocetku svake godine moraju upisati svezi podaci za radnike. Primer
u 2001 godini podaci su sledeci
sifraRadnika | imeRadnika | Adresa
----------------------------------
1 | Pera | nnn 1
2 | Marko | nnn 2
u 2003 godini doslo je do promene adresa pa sad izgleda ovako
sifraRadnika | imeRadnika | Adresa
----------------------------------
1 | Pera | mmm 8
2 | Marko | mmm 9
znaci sve sto se promenilo su adrese radnika a sifra im je ostala ista. Sad problem lezi u tome kad se radi prikaz onda bi se ovi podaci morali vezati za godinu pa se tako iscitavati. Ovo onda povlaci i drugciju strukturu tabele i gomilanje podataka iz godine u godinu i dodatnu kompleksnost prilikom pisanja query-ija. I za ovaj problem me insteresuju resenja drugih.
Toliko za ovaj put
Pozdrav
Radim u MSDE-u i interesuje me kako je bolje da se pise query prilikom joiniranja.
Evo primera:
U jednoj tabeli se nalaze radnici i njihovi podaci
Radnik
---------------------------------------------------
sifraRadnika
imeRadnika
sifraMestaStanovanja
adresa
---------------------------------------------------
dok je druga tabela cuva podatke o mestima
Mesto
---------------------------------------------------
sifraMesta
imeMesta
---------------------------------------------------
Sad ukoliko bi hteo da join-iram mesta sa radnicima pisao bi
SELECT * FROM Radnik INNER JOIN Mesto ON Mesto.SifraMesta = Radnik.sifraMestaStanovanja
i ovo bi radilo lepo ali sta ako hocu da ucitam radnike koji su na primer iz nekog mesta recimo beograd (neka je onda sifra 11000)
onda bih pisao sledeci upit
SELECT * FROM Radnik INNER JOIN Mesto ON Mesto.SifraMesta = Radnik.sifraMestaStanovanja
WHERE sifraMestaStanovanja = 11000
ili mozda ovako
SELECT * FROM
Radnik INNER JOIN
(SELECT * FROM Mesto WHERE sifraMesta = 11000) AS M
ON M.SifraMesta = Radnik.sifraMestaStanovanja
sta je bolje od ova dva upita pisati i kada? Znam da je pitanje relativno ali mene interesuje prvenstveno praksa drugih.
Drugo sto me interesuje je jedno logicko resenje.
Uvek su mi bili problem podaci koji se vezuju za vreme tj. ni danas nisam siguran kako ih resavam a problem je u sledecem
neka je opet u pitanju ona tabela Radnik
e sad problem je sta da radim sa siframa radnika koji moraju biti jedinstveni ali jedinstveni na nivou godine tj. uvek sifraRadnika ostaje ista ali podaci se tokom godine menjaju za radnika pa se na pocetku svake godine moraju upisati svezi podaci za radnike. Primer
u 2001 godini podaci su sledeci
sifraRadnika | imeRadnika | Adresa
----------------------------------
1 | Pera | nnn 1
2 | Marko | nnn 2
u 2003 godini doslo je do promene adresa pa sad izgleda ovako
sifraRadnika | imeRadnika | Adresa
----------------------------------
1 | Pera | mmm 8
2 | Marko | mmm 9
znaci sve sto se promenilo su adrese radnika a sifra im je ostala ista. Sad problem lezi u tome kad se radi prikaz onda bi se ovi podaci morali vezati za godinu pa se tako iscitavati. Ovo onda povlaci i drugciju strukturu tabele i gomilanje podataka iz godine u godinu i dodatnu kompleksnost prilikom pisanja query-ija. I za ovaj problem me insteresuju resenja drugih.
Toliko za ovaj put
Pozdrav