selecteer info met minimaal bepaalde rechten
momenteel ben ik bezig met een vrij groot project. Ik ben nu een e-mail functie aan het schrijven, waarbij je bepaalde groepen gebruikers een mail kan sturen.
Je hebt verschillende groepen gebruikers zoals: Moderator, superusers, e.d. Deze hebben per groep verschillende rechten. Gebruikers krijgen bepaalde rechten toegekend en aan de hand daarvan worden zijn Moderator, e.d.
Nu zijn er bepaalde gebruikers die maar 3 van de 5 rechten hebben van een Moderator. Dus ze zijn geen moderator.
Als ik dus nu een mail wil sturen naar alle Moderators, dan wil ik via een sql-statement (in een functie), de e-mail addresseen oproepen van alle gebruikers die ALLE de rechten van een Moderator hebben (dus niet 3 van de 5, maar echt 5 van de 5).
Ik heb de volgende tabellen:
tblUsers
intUserID
strName
strEmail
De tabel met gebruikers gegevens.
tblRights
intRightsID
strName
De tabel met alle rechten.
tblRightsCategories
intRightsCategoriesID
strName
De tabel met alle rechten-categorieen. (Zoals: Moderator, Superuser, e.d.)
Nu heb ik 3 koppel tabellen om de bovenstaande tabellen aan elkaar te koppelen. Dit is ook vanwege dat gebruikers meerdere rechten kunnen hebben en rechten aan meerdere categorieën kunnen worden toegekend.
tblUsersRights
intUsersRightsID
intUsersID
intRightsID
In deze tabel worden gebruikers aan rechten gekoppeld.
tblRightsRightsCategories
intRightsRightsCategoriesID
intRightsID
intRightsCategoriesID
In deze tabel worden de rechten gekoppeld aan de categorieën.
Dat is dus de database (klein deel maar hoor :)). Nu heb ik al iets van een query uitgedacht, maar daar komt niet echt uit wat ik wil.
SELECT tu.strEmail
FROM
tblUsers as tu,
tblRightsCategories as trc,
tblRightsRightsCategories as trrc,
tblRights as tr, tblUsersRights as tur
WHERE
(trc.strTitle='moderator')
and
(trc.intRightsCategoriesID=trrc.intRightsCategoriesID)
and
(trrc.intRightsID=tr.intRightsID)
and
(tr.intRightsID=tur.intRightsID)
and
(tur.intUsersID=tu.intUsersID)
Met deze query krijg ik dus het email-adress van iedere gebruiker die ook maar 1 van de rechten heeft van een moderator. Er moet dus ergens iets worden gecontroleerd (in MySQL) of de gebruiker wel alle 5 de rechten heeft (stel dat het er 5 zijn).
Het is de bedoeling dat het in 1 query gedaan wordt, ik denk dat het wel kan, maar ik kom er even echt niet meer op. SQL is sowieso niet mijn sterkste kant, gecompliceerde query's e.d., dus ik vraag jullie. :)
Alvast bedankt.
Er zijn nog geen reacties op dit bericht.