Code:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `SP_GET_USER_PERMISSION`(IN username varchar(15), IN meniid int)
BEGIN
set names utf8;
select m.naziv, gm.insertpermissiondane, gm.updatepermissiondane, gm.deletepermissiondane
from (((((korisnik k inner join grupa_korisnika gk on k.korisnikid=gk.korisnikid) left join
grupa g on g.grupaid=gk.grupaid) inner join
grupa_meni gm on gm.grupaid=g.grupaid) inner join
meni m on m.meniid=gm.meniid))
where ((k.username=`username`) and (gm.meniid=meniid));
END
-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `SP_GET_USER_PERMISSION`(IN username varchar(15), IN meniid int)
BEGIN
set names utf8;
select m.naziv, gm.insertpermissiondane, gm.updatepermissiondane, gm.deletepermissiondane
from (((((korisnik k inner join grupa_korisnika gk on k.korisnikid=gk.korisnikid) left join
grupa g on g.grupaid=gk.grupaid) inner join
grupa_meni gm on gm.grupaid=g.grupaid) inner join
meni m on m.meniid=gm.meniid))
where ((k.username=`username`) and (gm.meniid=meniid));
END
Pogled na model je sledeći:
Ono što dobijam kao rezultat izvršavanja procedure je:
E sada problem je sledeći. Ja ovde dobijam 2 reda a treba mi jedan. U jednom redu imam za delete permission 1 (što znači da ima pravo da briše rekorde u određenom meniju), a u drugom imam delete permission 2 (što znači da dati korisnik nema pravo da briše rekorde u određenom meniju). Imam dva reda zato što sam ovog korisnika stavio u dve različite grupe kojima se prava pristupa preklapaju. Znači meni treba da kada imam 1 i 2 recimo za delete permission, dobijem u izlazu 1 (korisnik je učlanjen u jednu grupu koja nema pravo pristupa, ali je uključen i u drugu grupu koja ima pravo pristupa tako da mi treba podatak da taj korisnik ima pravo pristupa).
Baza je mysql 5.1.