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
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
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
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
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
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]