Siramon: JOINS über mehrer Tabellen -- Lösung

Beitrag lesen

hallo ludwig, hallo klaus, hallo forum,

ich habe die lösung gefunden - und demnach auch meinen überlegungsfehler ;)

kurz nochmals das problem:

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.

Roles

RID (die ID der rollen - primary key)
Bezeichnung

Zuweisungstabellen:

UserRoles

UID (primary key) --> User.UID
RID (primary key) --> Roles.RID

SiteRoles

SID (primary key) --> Sites.SID
RID (primary key) --> Roles.RID

die lösung:

SELECT SiteRoles.RID
FROM
sites LEFT JOIN SiteRoles USING (SID)
LEFT JOIN UserRoles USING (RID)
LEFT JOIN User USING (UID)
WHERE User.UID = $AktuelleUID AND sites.SID = $AktuelleSID;

vielleicht könnte man das noch mehr optimieren?

aber auf jedenfall vielen dank für euere tips!

llap

Siramon