webForumDet fria alternativet

Klurig SQL-fråga med flera tabeller

Databaser & SQLur Databashanterare & SQL

3 svar · 237 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#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
Medlem sedan feb. 20011 198 inlägg
#2

funkar din SQL-fråga?

Medlem sedan jan. 20013 406 inlägg
#3

nope, skrev den rakt ut från huvudet

Medlem sedan jan. 20013 406 inlägg
#4

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

155 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
152 ms — hämta tråd, inlägg och bilagor (db)