MySQL: объединение таблицы меню, таблицы пользователей, таблицы доступа - PullRequest
0 голосов
/ 21 февраля 2011

Ну, ребята, у меня есть три таблицы, меню, пользователь и доступ.Для упрощения рассмотрим:

  • Таблица пользователя имеет один столбец: id
  • Таблица меню имеет 5 столбцов: id, title, url, lft, rgt
  • Таблица доступаимеет 4 столбца: id, user_id, menu_id, access

Я использую SitePoint's Модифицированный обход дерева предзаказа для отображения меню:

SELECT id, title, lft, rgt, url FROM menu WHERE lft BETWEEN 3 AND 49 ORDER BY lft ASC;

Втаблица доступа, столбец доступа имеет значения 0 или 1. В то же время, на данной странице у меня есть значение идентификатора таблицы пользователя, скажем, $ id.

Идея состоит в том, чтобы изменить вышевыберите, чтобы отображались только те пункты меню, где в соответствующей таблице Access столбец доступа установлен в 1. При доступе = 0 меню не отображается для данного пользователя.

Я был свободен?Заранее благодарю за любую помощь.Приветствия.

Ответы [ 2 ]

1 голос
/ 21 февраля 2011
Select ...
From menu
Where lft Between 3 And 49
    And Exists  (
                Select 1
                From AccessTable As T1
                Where T1.menu_id = menu.Id
                    And T1.access = 1
                    And T1.user_id = $id
                )
0 голосов
/ 21 февраля 2011

выберите id, title, lft, rgt, url из доступа к соединению меню на (menu.id = access.menu_id), где (lft между 3 и 49) и access.access = 1 порядок на lft asc;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...