2013-03-21 101 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')