DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `SP_PRETRAZI_NASTAVNIKA`(IN ime varchar(25), IN prezime varchar(35), IN katedra varchar(40), IN zvanje varchar(25))
BEGIN
set names utf8;
SELECT n.ime as ime, n.prezime as prezime, z.naziv as zvanje, k.naziv as katedra, f.naziv as funkcija, ra.naziv as angazovanje
FROM ((((((((NASTAVNIK N LEFT JOIN NASTAVNIK_ZVANJE NZ ON N.NastavnikID=NZ.NastavnikID) LEFT JOIN
ZVANJE Z ON z.zvanjeId=nz.zvanjeid) LEFT JOIN
KATEDRA K ON K.Katedraid=N.KatedraID) LEFT JOIN
NASTAVNIK_RADNO_ANGAZOVANJE NRA ON NRA.NastavnikID=N.NastavnikID) LEFT JOIN
RADNO_ANGAZOVANJE RA ON RA.TipRadnogAngazovanjaID=NRA.TipRadnogAngazovanjaID) LEFT JOIN
NASTAVNIK_FUNKCIJA NF ON NF.NastavnikID=N.NastavnikID) LEFT JOIN
FUNKCIJA F ON F.FunkcijaID=NF.FunkcijaID))
WHERE (N.ime like concat(ime,'%')) and (N.prezime like concat(prezime,'%')) and (k.naziv like concat(katedra,'%')) and (z.naziv like concat(zvanje,'%'));
END
Na pocetku sam krenuo da stavim za like 'ime%' ali nije procedura radila. Na internetu sam našao da treba da ubacim CONCAT(ime,"%").
Kad ukucam:
CALL SP_PRETRAZI_NASTAVNIKA('','','','');
procedura mi daje sledeci izlaz:
A trebalo bi da daje sledece:
Posumljao sam da problem prave NULL vrednosti u koloni zvanje. Nema mnogo iskustva sa mysql-om pa molim za pomoc.