Ik ben een ASP webapplicatie aan het ontwikkelen die gebruik maakt van een Microsoft SQL Server database.
Mijn vraag gaat over de volgende drie tabellen (versimpeld; slechts relevante gegevens weergegeven:
users
userId
lastName
gender
emailAddress
isAdmin
portals
portalId
accessRightId
users_rights
rightId
userId
Het veld accessRightId in de tabel portals verwijst naar een rightId in de tabel rights (deze tabel is niet nodig voor de query). Dit rightId wordt in de koppeltabel users_rights gekoppeld aan één of meerdere users. Wanneer een user over het right beschikt dat wordt gespecificeerd door accessRightId in tabel portals krijgt hij of zij toegang tot deze portal. Admins hebben het veld isAdmin in tabel users op '1' staan, en hebben automatisch toegang tot alle portals. Voor admins zijn dus geen koppelingen opgenomen aan rights in de tabel users_rights.
Ik wil nu een recordset hebben met lastName, emailAddress, gender van alle users die óf toegangsrechten hebben tot een bepaalde portal, óf admin zijn. Ik krijg alleen niet de goede query daarvoor bedacht.
De volgende query levert me wel iedereen die expliciete toegangsrechten hebben tot de portal, maar dan zonder de admins:
Als ik nu het volgende probeer, krijg ik nog steeds niet de admins erbij:
Waar zit het probleem?
Alvast bedankt
.
Mijn vraag gaat over de volgende drie tabellen (versimpeld; slechts relevante gegevens weergegeven:
users
userId
lastName
gender
emailAddress
isAdmin
portals
portalId
accessRightId
users_rights
rightId
userId
Het veld accessRightId in de tabel portals verwijst naar een rightId in de tabel rights (deze tabel is niet nodig voor de query). Dit rightId wordt in de koppeltabel users_rights gekoppeld aan één of meerdere users. Wanneer een user over het right beschikt dat wordt gespecificeerd door accessRightId in tabel portals krijgt hij of zij toegang tot deze portal. Admins hebben het veld isAdmin in tabel users op '1' staan, en hebben automatisch toegang tot alle portals. Voor admins zijn dus geen koppelingen opgenomen aan rights in de tabel users_rights.
Ik wil nu een recordset hebben met lastName, emailAddress, gender van alle users die óf toegangsrechten hebben tot een bepaalde portal, óf admin zijn. Ik krijg alleen niet de goede query daarvoor bedacht.
De volgende query levert me wel iedereen die expliciete toegangsrechten hebben tot de portal, maar dan zonder de admins:
code:
1
2
3
4
5
| SELECT DISTINCT lastName, emailAddress, gender FROM muiderburght_users_rights AS r, muiderburght_users AS u WHERE u.userId = r.userId AND rightId IN (SELECT accessRightId FROM muiderburght_portals WHERE portalId = X) |
Als ik nu het volgende probeer, krijg ik nog steeds niet de admins erbij:
code:
1
2
3
4
5
6
| SELECT DISTINCT lastName, emailAddress, gender FROM muiderburght_users_rights AS r, muiderburght_users AS u WHERE u.userId = r.userId AND (rightId IN (SELECT accessRightId FROM muiderburght_portals WHERE portalId = X) OR u.isAdmin = 1) |
Waar zit het probleem?
Alvast bedankt
[ Voor 3% gewijzigd door Eelke Spaak op 24-05-2004 20:57 . Reden: anti layoutverneuking ]