我一直在努力整理一个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抱歉格式太乱了!
答案 0 :(得分:0)
这里有一个根本问题:一个糟糕的模型。您对建模(一起)感兴趣的两件事都是树。我鼓励你看看邻接树或嵌套树。这假设您希望菜单项包含内部菜单项,同样也适用于组。
另一种皮肤修饰方法是将两者都模拟为复合材料。在数据库中这样做涉及使用继承,但在这些情况下,它将非常简单。