[ bloker @ 25.11.2013. 13:39 ] @
Pozdrav, radim aplikaciju za evidenciju radnog vremena pa sam zakovao pri kreiranju upita.. U pitanju su 4 tabele: tabela radnici: u kojoj se čuvaju svi podaci o radnicima i ima ključ ID tabela erv: u koju se upisuju svi izlasci i dolasci radnika sa posla i na posao erv.radnikid=radnici.id tabela kalendar: u kojoj se nalaze svi dani u jednom mjesecu sa opisima pored tih dana (radni dan, vikend, državni praznik, neradni dan...) tabela odsustvo: u ovoj tabeli se upisuju godišnji odmori, bolovanja, plaćeno i neplaćeno odsustvo odsustvo.radnikid=radnici.id evo i create za ove tabele: Code: CREATE TABLE `radnici` ( `SIFRA` int(3) NOT NULL DEFAULT '0', `IME` varchar(100) NOT NULL DEFAULT ' ', `PREZIME` varchar(100) NOT NULL DEFAULT ' ', `JMBG` varchar(20) NOT NULL DEFAULT ' ', `SEKTOR` int(1) NOT NULL DEFAULT '0', `SLUZBA` int(2) NOT NULL DEFAULT '0', `RADNOMJESTO` varchar(255) NOT NULL DEFAULT ' ', `RADNOVRIJEME` int(1) NOT NULL DEFAULT '0', `ID` int(11) NOT NULL AUTO_INCREMENT, `AKTIVAN` int(1) NOT NULL DEFAULT '0' COMMENT '1-DA 0-NE', PRIMARY KEY (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=215 DEFAULT CHARSET=utf8 Code: CREATE TABLE `erv` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `RADNIKID` int(11) NOT NULL DEFAULT '0', `VRIJEMEP` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', `LOKACIJAP` int(3) NOT NULL DEFAULT '0', `VRIJEMEK` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', `LOKACIJAK` int(3) NOT NULL DEFAULT '0', `TIP` int(1) NOT NULL DEFAULT '0' COMMENT '1-dolazak/odlazak, 2-izlazak, 3-pauza', `IZLAZNICAID` int(11) NOT NULL DEFAULT '0', `NAPOSLU` time NOT NULL DEFAULT '00:00:00', `NAPOSLUPLATA` time NOT NULL DEFAULT '00:00:00', `VRIJEMEP_H` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', `VRIJEMEK_H` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', `OPRAVDANO` int(11) NOT NULL DEFAULT '0' COMMENT '1-opravdano, 2-neopravdano', `RAZLOG_O` varchar(200) NOT NULL DEFAULT ' ', `KORISNIK_O` int(11) NOT NULL DEFAULT '0', `VRIJEME_O` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', `AKTIVNO` int(1) NOT NULL DEFAULT '1', PRIMARY KEY (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=27605 DEFAULT CHARSET=utf8 Code: CREATE TABLE `kalendar` ( `DATUM` date NOT NULL DEFAULT '0001-01-01', `RADNI` int(11) NOT NULL DEFAULT '0', `OPIS` varchar(200) NOT NULL DEFAULT ' ', PRIMARY KEY (`DATUM`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 Code: CREATE TABLE `odsustvo` ( `DATUM` date NOT NULL DEFAULT '0001-01-01', `RAZLOGID` int(5) NOT NULL DEFAULT '0', `NAPOMENA` varchar(200) NOT NULL DEFAULT ' ', `RADNIKID` int(11) NOT NULL DEFAULT '0', `DATUM_U` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', `KORISNIK_U` int(11) NOT NULL DEFAULT '0' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 Treba da dobijem informacije o imenu i prezimenu radnika i njegovim aktivnostima za određeni vremenski period (u sledećem upitu od 01.11.2013. do 30.11.2013.) iz tabele radnici treba da pročita ime i prezime, iz tabele kalendar da pročita opis, iz tabele erv njegove aktivnosti i iz tabele odsustvo da li je imao odsustvo. Može se desiti da za jednog radnika imaju podaci u tabelama odsustvo i erv za isti dan (ne bi trebalo da se desi ali postoji šansa da rukovodilac napravi grešku i unese da je radnik na godišnjem odmoru, a on je tog dana radio) pokušao sam sa ovakvim upitom ali ne mogu da dobijem podatke iz obje tabele (erv i odsustvo) Code: SELECT R.IME, R.PREZIME, E.VRIJEMEP, E.VRIJEMEK, O.NAPOMENA, K.DATUM FROM kalendar AS K LEFT OUTER JOIN erv AS E ON DATE(E.VRIJEMEP)=K.DATUM RIGHT OUTER JOIN radnici AS R ON E.RADNIKID=R.ID LEFT OUTER JOIN odsustvo AS O ON O.RADNIKID=R.ID AND K.DATUM=O.DATUM WHERE K.DATUM>"2013-11-01" AND K.DATUM<="2013-11-30" AND R.SIFRA=1 ORDER BY K.DATUM Nadam se da nisam previše zakomplikovao pitanje, ako treba još nešto da se pojasni tu sam. [Ovu poruku je menjao bloker dana 25.11.2013. u 15:01 GMT+1] [Ovu poruku je menjao bloker dana 27.11.2013. u 12:35 GMT+1] |