MySQL Komplexer Join über 5 Tabellen

Spy

Ray Magini
ID: 65650
L
20 April 2006
219
12
Hallo zusammen,

ich habe gerade ein gedankliches Problem. Um Benutzerrechte zu bearbeiten muss ich über ein paar Tabellen joinen und bin mir damit einfach nicht sicher.
Vorab ist folgendes zu beachten: Ein User kann in einer Gruppe sein. Einer Gruppe wird mit Hilfe einer n:m-Tabelle eine Berechtigung auf eine Permission-Group gegeben. Ich möchte eine Tabelle mit allen Perm-Groups und neben jeder perm-Group eine Info, ob der User mit der id 1 Zugriff hat, oder nicht.
Hier erstmal die Tabellendefinitionen (vereinfacht):

User
user_id|name
1|peter

Groups
group_id|name
2|Administrator

user_groups
user_id|group_id
1|2

perm_group
perm_group_id|name
5|Plugin_admin

permission
perm_group_id|group_id|permission(binary)
5|2|31


Entweder geht meine Denke in die falsche Richtung oder ich sehe den Wald einfach nicht.
Hoffe ihr könnt mir helfen.
 
Entweder verstehe ich gerade auch was falsch oder das hier könnte eine Lösung sein:

Du machst einen Join über:

Select perm.perm_group_id, perm.group_id perm.permission, from permission, ug.user_id as perm left join user_groups as ug on perm.group_id = ug.group_id where ug.user_id = 1

In der user_groups steht ja die user_id drinnen. Wenn die user_id vorhanden ist, hat er ja zugriff (Ansonsten musst du noch perm.permission abfragen). Also fragst du noch einfach where user_id= 1 ab und du müsstes noch dein gewünschtest ergebnis haben.

Falls du noch weitere Infos darüber haben willst, zum Beispiel Username bzw Gruppenbezeichnung, dann kannst du sie oben noch einfach noch anfügen.
 
Naja nicht ganz.
Im Resultat soll am Ende folgendes rauskommen:

Plugin_admin | Administrator
andere_gruppe | {NULL}
gruppe_drei | Administrator