2011-02-20 3 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

Я обновил свой ответ, чтобы ответить на ваш комментарий. –

+0

Я получаю эту ошибку: «function if (boolean, integer, integer) не существует», и этот намек: «Никакая функция не соответствует указанному имени и типам аргументов. Возможно, вам придется добавлять явные типы приведения». – Psyche

Смежные вопросы