如何在SQL中进行OR查询

时间:2013-03-21 08:57:53

标签: php mysql

我希望仅限某些类别的用户访问某些类别。

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搜索,以便查询返回属于给定组织ID或给定用户ID的类别
  2. 我想要Discussions表的类似限制。所以我创造了..

    讨论

    Discussion_id,discussion_title

    Discussion_Users

    Discussion_Id,User_id

    Discussion_Organisations

    Discussion_Id,Organisation_id

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

1 个答案:

答案 0 :(得分: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')