Hallo Andreas,
Ich hoffe jetzt verstehst Du es besser. BEdenke das ich 2 verschiedene Ebenen habe, einmal user-typ(Admin...) und einem User-Gruppe (Apteilung1,2,3...), in jeder Gruppe soll jeder nur auf die Daten dieser Gruppe zugreifen können, aber in der Gruppe gibt es Admins, Gäste die verschiedend weitreichende Rchte haben(schreibend, oder nur lesend...)
Ich vergesse einfach mal Dein Datenmodell und entwerfe mein eigenes dazu:
Für den Fall Benutzer:Gruppen m:n, Benutzer:Typen n:1:
Tabelle Gruppen
---------------
GruppenID
GruppenName
Tabelle Typen
---------------
TypID
TypName
Tabelle Benutzer
----------------
BenutzerID
...
TypID
Tabelle Benutzer_Gruppen
------------------------
BenutzerID
GruppenID
...
Tabelle Rechte (SonstigeID kann z.B. die ID eines Menüeintrages sein)
--------------
GruppenID
TypID
SonstigeID
RechtName
...
Listet alle Rechte dieses Benutzers:
SELECT
Rechte.RechtName as RechtName
FROM
Rechte,
Benutzer_Gruppen,
Benutzer
WHERE
Rechte.GruppenID = Benutzer_Gruppen.GruppenID
AND
Rechte.TypID = Benutzer.TypID
AND
Benutzer_Gruppen.BenutzerID = Benutzer.BenutzerID
AND
Benutzer.BenutzerID = $user_id
AND
Rechte.SonstigeID = $sonstige_id;
Für den Fall Benutzer:Gruppen n:1, Benutzer:Typen n:1:
Tabelle Gruppen
---------------
GruppenID
GruppenName
...
Tabelle Typen
---------------
TypID
TypName
...
Tabelle Benutzer
----------------
BenutzerID
...
TypID
GruppenID
Tabelle Rechte
--------------
GruppenID
TypID
SonstigeID
RechtName
Listet alle Rechte dieses Benutzers:
SELECT
Rechte.RechtName as RechtName
FROM
Rechte,
Benutzer
WHERE
Rechte.GruppenID = Benutzer.GruppenID
AND
Rechte.TypID = Benutzer.TypID
AND
Benutzer.BenutzerID = $user_id
AND
Rechte.SonstigeID = $sonstige_id;
RechtName kann dann z.b. "Lesen", "Schreiben", etc. sein, je nachdem, was Du halt brauchst.
Viele Grüße,
Christian
Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!