2011-02-20 37 views
0

我正在研究一個腳本,其目的是授予站點用戶訪問站點菜單的不同部分的權限。爲此,我創建了兩個表,「菜單」和「權利」:編寫查詢加入兩個表的問題

menu 
- id 
- section_name 

rights 
- id 
- menu_id (references column id from menu table) 
- user_id (references column id from users table) 

如何查詢,以獲得所有的菜單部分,並標記一個給定的用戶具有訪問權限的那些被寫入。

我使用PHP和Postgres。

謝謝。

回答

2

也許是這樣的:

SELECT M.*, CASE WHEN R.user_id > 0 THEN 1 ELSE 0 END AS access FROM menu AS M 
LEFT JOIN rights AS R ON (R.menu_id = M.id AND R.user_id = 1) 
+0

@ arex1337:那麼它也不行,因爲我想要得到所有從菜單中的部分,不僅在用戶具有訪問的,併爲那些在那裏用戶有訪問權限顯示一個帶有值的新列(類似'1') – Psyche

+0

我更新了我的答案以解決您的評論。 – 2011-02-20 23:16:08

+0

我得到這個錯誤:「函數如果(布爾,整數,整數)不存在」,這個提示:「沒有函數匹配給定的名稱和參數類型,您可能需要添加顯式類型轉換。 – Psyche