2013-03-21 98 views
0

我想限制某些组织的用户只能访问某些组织的用户。如何在SQL中执行OR查询

User 
User_id, Username, Organisation_id 

Organisation 
Organisation_id, Org_name 

Category 
Category_id, Cat_name 


Category_Organisation 
Category_id, Organisation_id 

所以我的查询变得像这个 -

SELECT * FROM category c 
INNER JOIN category_organisation co ON co.category_id = c.category_id 
AND co.organisation_id = 'LOGGED_IN_USERs_ORGANISATION_ID' 

如果我要添加一个例外,即允许一些用户太然后,我有这个表

Category_user 
Category_id, User_id 

我的问题是 -

  1. 如何进行OR搜索h以便查询返回属于给定组织ID或给定用户ID的类别
  2. 我想要Discussions表的类似限制。因此,我创建..

    讨论

    Discussion_id,discussion_title

    Discussion_Users

    Discussion_Id,USER_ID

    Discussion_Organisations

    Discussion_Id,Organisation_id

正如您所看到的,我必须创建类似的表格 - 您认为我可以为所有这些产品,类别或其他新表格实现一个主要权限表吗?

+0

了解更多关于SQL连接和多到多,一到多,一到一个关系。 – bodi0 2013-03-21 08:58:53

回答

1

请试试这个:

SELECT * FROM category c 
INNER JOIN category_organisation co ON co.category_id = c.category_id 
AND co.organisation_id = 'LOGGED_IN_USERs_ORGANISATION_ID' OR c.category_id IN(SELECT Category_user.Category_id FROM Category_user WHERE Category_user.User_id = 'LOGGED_IN_USERs_ORGANISATION_ID')