Mysql数据库帮助表

时间:2011-06-14 16:46:28

标签: mysql database

我一直在努力整理一个mysql查询:(任何帮助都会很棒。

我正在尝试将三件事情联系起来。菜单项,菜单项组和权限级别。

所以我有五张桌子:

带有的menuItems表 id(唯一)

我有一个组表 组ID(唯一)

和menuIdGroupId表 的groupId 菜单Id

我有一张特权表 privilegeid(unique)

和groupsPrivlstable idGroups idPrivilege

特权表和组表实际上只是组和特权的列表。特权组表和groupMenu表都旨在连接表以关联所有内容。

我为查询尝试了很多组合,但都没有工作:

SELECT *
    FROM `menuIdGroupId`
       JOIN `menuItems` ON menuItems.id = menuIdGroupId.menuId
       JOIN `groupsPrivls` ON groupsPrivls.idGroups = menuIdGroupId.groupId
    WHERE groupsPrivls.idPrivilege = '1'
    LIMIT 0 , 30

如果groupsPrivls是

idGroups   idPrivilege
7          0
7          1
1          1
1          2
1          4
13         5
9          2
12         1
1          5
1          6
7          2
7          4
7          5
7          6

和menuIDGroupId

groupId   menuId
1         30
7         29
1         31
1         29
1         33
7         33
4         33
1         32
7         30
7         31

id     text
33     button 3     
32     button 2     
31     button 1     
30     Church   
29     About 

结果是

groupId   menuId    id    text           idGroups     idPrivilege
7         29        29    About Us       7            1
7         33        33    button 3       7            1
7         30        30    New to Church  7            1
7         31        31    button 1       7            1
1         30        30    New to Church  1            1
1         31        31    button 1       1            1
1         29        29    About Us       1            1
1         33        33    button 3       1            1
1         32        32    button 2       1            1

正如您所看到的,我收到重复的条目,我不明白为什么。我猜我没有把它设置为八。任何帮助都会很棒。

由于

艾伦

PS抱歉格式太乱了!

1 个答案:

答案 0 :(得分:0)

这里有一个根本问题:一个糟糕的模型。您对建模(一起)感兴趣的两件事都是。我鼓励你看看邻接树或嵌套树。这假设您希望菜单项包含内部菜单项,同样也适用于组。

另一种皮肤修饰方法是将两者都模拟为复合材料。在数据库中这样做涉及使用继承,但在这些情况下,它将非常简单。