MySQL:加入菜单表,用户表,访问表

时间:2011-02-21 01:01:04

标签: mysql join

好吧,我这里有三张桌子,菜单,用户和访问权限。为了简化,我们考虑一下:

  • 用户表有一列:id
  • 菜单表有5列:id,title, url,lft,rgt
  • 访问表有4个列:id, user_id,menu_id,access

我正在使用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>

我清楚了吗?在此先感谢您的帮助。 欢呼声。

2 个答案:

答案 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;