Siramon: {MYSQL} JOINS über mehrer Tabellen

Beitrag lesen

hallo forum,

ich arbeite gerade an einem authorisations-system für meine website.
dort muss sich der user anmelden und kriegt eine rolle.

beispiele: gast, member, moderator, administrator...

jede website, die sich der user ankucken will lässt eine oder mehrer rollen zu.

ich hab mir dafür eine tabellenstruktur zusammengebastelt:

Sites
-----
SID (die ID der sites - primary key)
Sitename
usw.

User
----
UID (die ID der mitglieder - primary key)
Nickname
usw.

Roules
----
RID (die ID der rollen - primary key)
Bezeichnung

Zuweisungstabellen:

UserRoules
----
UID (primary key) --> User.UID
RID (primary key) --> Roules.RID

SiteRoules
----
SID (primary key) --> Sites.SID
RID (primary key) --> Roules.RID

ich hoffe, die struktur ist einigermassen verständlich erklärt ;)

die abfrag ist in worten eigentlich ganz simpel und sollte der logik nach auf funktionieren.

ich schreibs mal als sql - statement nieder:

SELECT s.SID, u.UID, sr.SID, sr.RID, ur.UID, ur.RID FROM Sites AS s, User AS u, SiteRoules AS sr, UserRoules AS ur WHERE u.UID = ur.UID AND s.SID = sr.SID AND ur.RID = sr.RID

das klappt eigentlich so auch, das heisst, wenn die abfrage daten zurückliefert, ist der benutzer berechtigt die site zu sehen, wenn nicht --> keine berechtigung.

mein problem ist nun die performance. das karthesische produkt dieser 4 tabellen könnte in den himmel wachsen (mein gott, denk ich blumig ;).

ich suche jetzt also nach einer lösung mit JOINS, ich habe mir da schon ein paar sachen angeschaut.

z.b. dies hier:

SELECT A.EineSpalte, B.EineAndereSpalte  
FROM Tabelle1 AS A JOIN Tabelle2 AS B      
ON A.EinWert = B.EinAndererWert;

aber wie funktioniert das ganze nun über mehr als zwei tabellen? habe leider dazu nix gefunden...

ich habe schon mehrer möglichkeiten selbst ausprobiert, aber ich kriegs nicht auf die reihe :(

wäre froh, wenn mir jemand ein rezept oder einen hinweis geben könnte.

tx a lot im voraus.

llap

Siramon