Verzwicktes Join in MySQL 4.0.0

  • Hallo! Gestern habe ich Stunden mit einem Statement verbracht und dachte schon, ich hätte es gelöst. Dann hab ich einen Testfall gefunden, bei dem es versagt. Heute habe ich schon wieder zwei Stunden daran herumgeknobelt und komme auf keine vernünftige Lösung.

    Es handelt sich um ein Berechtigungssystem. Es gibt eine Tabelle Benutzer, eine Tabelle BenutzerRecht (für die n:m Beziechung) und eine Tabelle Recht.

    Die Tabelle Recht enthält sämtliche Berechtigungen (derzeit 10, können mehr werden). Tabelle Benutzer enthält sämtliche Benutzer. Und BenutzerRecht enthält, welcher Benutzer welches Recht hat.

    Das große Problem: In BenutzerRecht habe ich nur Leute drinnen, die tatsächlich ein Recht haben. Neu angelegte Benutzer haben nämlich keinerlei Rechte. Außerdem speichere ich nur Rechte ab, die auch tatsächlich gegeben werden.


    Folgende Tabellenstruktur:


    und das Statement, mit dem ich das ganze verknüpfe (MySQL 4.1.0 mit Subselects ist aufgrund des Alpha-Status nicht erlaubt):

    Die Lösung schaut nicht nur grauslich aus, sondern funktioniert auch nicht so ganz, wie sie soll. Man müsste über das ganze noch ein MAX(darf) machen, das geht aber irgendwie nicht und macht's auch nicht besser.

    Ich werde das MAX(darf) mal händisch im PHP machen, nachdem ich auf keinen grünen Zweig komme. ...irgendwelche anderen Tips? // René

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!