webForumDet fria alternativet

Klurig SQL-fråga med flera tabeller

3 svar · 237 visningar · startad av Addeladde

AddeladdeMedlem sedan jan. 20013 406 inlägg
#1

Jag ska skriva en sql-fråga för att kolla behörigheter på sidor som finns i en databas.

Jag har tabellerna:
sidor
sidaID
sidaNamn

users
userID
userName

groups
groupID
groupName

membership
membershipID
userID
groupID

objects
objID
objName
objType
objTableName (anger tabellen som objektet ligger i exempelvis tabellen sidor)
objTableID (anger det unika id som finns representerat för objektet i tabellen)

ac1 (behörigheterna kopplas ihop med objekt och användare/grupp)
ac1ID
userID
groupID
objID
access

Nu om jag t.ex vill lista sidor som en användare har tillåtelse att visa hur skriver jag då sql-satsen så att högsta möjliga acces uppnås? T.ex om en användare inte har behörighet att visa en sida men är medlem i en grupp som har det så ska sidan visas. Tvärt om ska även fungera. Alltså om gruppen inte har tillåtelse att visa sidan men användaren har det.

Typ nått åt detta håll kanske

select * from sidor as s, obj as o, ac1 as a  where s.sidaID = o.objTableID 
and o.objTableName = ‘sidor’ and a.access > 0 and (a.userID= 4 or a.groupID in 
(select groupID from membership where userID =4)) orderby s.sidaNamn
yohpopsMedlem sedan feb. 20011 198 inlägg
#2

funkar din SQL-fråga?

AddeladdeMedlem sedan jan. 20013 406 inlägg
#3

nope, skrev den rakt ut från huvudet

AddeladdeMedlem sedan jan. 20013 406 inlägg
#4

Nån som har lust och hjälpa :)

126 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)