franky Posted August 2, 2003 Share Posted August 2, 2003 I need to create a permission system, where multiple permissions can be assigned to multiple roles. These roles can then be assigned to multiple users. These are the tables where the permissions and roles are stored: CREATE TABLE some_perms ( perm_id mediumint(8) NOT NULL auto_increment, perm_name varchar(32) NOT NULL default \'\', perm_desc varchar(255) NOT NULL default \'\', PRIMARY KEY (perm_id) ) TYPE=MyISAM; CREATE TABLE some_roles ( role_id mediumint(8) NOT NULL auto_increment, role_name varchar(32) NOT NULL default \'\', role_desc varchar(255) NOT NULL default \'\', PRIMARY KEY (role_id) ) TYPE=MyISAM; Now, I need to create 2 tables (don\'t know if I got it right) to hold what permissions belong to what roles, and what roles belong to what users: CREATE TABLE some_role_perms ( role_id mediumint(8) NOT NULL default \'0\', perm_id mediumint(8) NOT NULL default \'0\', perm_status tinyint(1) NOT NULL default \'0\', KEY role_perm_id (role_id, perm_id) ) TYPE=MyISAM; CREATE TABLE some_user_roles ( user_id mediumint(8) NOT NULL default \'0\', role_id mediumint(8) NOT NULL default \'0\', KEY user_role_id (user_id, role_id) ) TYPE=MyISAM; I know how to assign permissions/roles, add new ones, etc. But I have no idea how to get all available permissions for a user id in a single query. I know how to do it in multiple queries, but I want to do it in 1 query. I know it\'s possible, I just don\'t know how. Could anyone help me on this issue? Quote Link to comment Share on other sites More sharing options...
Barand Posted August 3, 2003 Share Posted August 3, 2003 SELECT p.perm_name, p.perm_desc FROM (some_perms p INNER JOIN some_role_perms r ON p.perm_id = r.perm_id) INNER JOIN some_user_roles u ON r.role_id = u.role_id WHERE u.user_id = $userid hth Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.