Jump to content


4 tables - 1 query

  • Please log in to reply
1 reply to this topic

#1 franky

  • New Members
  • Pip
  • Newbie
  • 1 posts

Posted 02 August 2003 - 12:47 AM

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?

#2 Barand

  • Moderators
  • Sen . ( ile || sei )
  • 18,016 posts

Posted 03 August 2003 - 07:12 PM

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

If you are still using mysql_ functions, STOP! Use mysqli_ or PDO. The longer you leave it the more you will have to rewrite.

Donations gratefully received


|baaGrid| easy data tables - and more
|baaChart| easy line, column and pie charts

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users