我在web應用中實施家庭釀造ACL系統,它給我很難。我相信這是微不足道的,只是無法擺脫它。加入查詢時遇到問題
我有一個3個表一對多的關係:
resource
,perms_group
,perms_users
其中perms_group
是一個關鍵的表,而如果需要perms_users
allowes我每用戶的基礎上微調訪問(這加起來perms_users
或者只是簡單地覆蓋它,兩個表將權限作爲布爾值存儲在單獨的列中)。
我想從資源的東西,以及獲取權限在單一的查詢:
SELECT *
FROM resource
LEFT OUTER JOIN perms_groups ON resource.id = perms_group.res_id
LEFT OUTER JOIN perms_users ON resource.id = perms_users.res_id
WHERE resource.id = 1
AND perms_group.group_id = 2
AND perms_users.user_id = 3
現在的麻煩是,用戶精細的權限將被設置很少或以上的查詢將返回在這樣的0行案件。我想說的是讓我回到組2和3用戶3 ,如果有任何設置。基本上我缺少AND_IF_EXISTS
運算符;)。我可以很容易地在兩個查詢中分解它,但是因爲它會在每次頁面刷新時運行,所以我需要儘可能精簡它。目前我正在使用MySQL,但稍後想要切換到PostgreSQL,所以理想的解決方案將獨立於數據庫。有任何想法嗎?
感謝