好吧,我这里有三张桌子,菜单,用户和访问权限。为了简化,我们考虑一下:
我正在使用SitePoint的Modified Preorder Tree Traversal来显示菜单:
SELECT id, title, lft, rgt, url FROM menu WHERE lft BETWEEN 3 AND 49 ORDER BY lft ASC;
在访问表中,访问列的值为0或1.同时,在给定页面上,我的ID值为User表,比如$ id。
这个想法是修改上面的选择只显示那些菜单项,在相应的Access表中,访问列设置为1.如果access = 0,则菜单不会出现给定用户。 / p>
我清楚了吗?在此先感谢您的帮助。 欢呼声。
答案 0 :(得分:1)
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
)
答案 1 :(得分:0)
从菜单加入访问(menu.id = access.menu_id)中选择id,title,lft,rgt,url,其中(lft介于3和49之间)和access.access = 1 order by lft asc;