我有一个复杂的小组模块计划。
表格结构:
Group :
GroupID, GroupName, GroupImage, StatusID
GroupMembers :
GroupMemberID, GroupID, ModuleID, ModuleEntityID
Users :
UserID, FirstName, LastName
Modules :
ModuleTable, ModuleID
Group - 1
User - 2
Other - 3
因此,在组成员表中不仅有用户,甚至任何旧组本身也可以是任何组的成员,如果组是任何组的成员,则意味着所有组成员都可以自动成为新组的一部分
示例:假设我在组a中有2个成员,我创建了一个组b,其中一个成员和组a,然后组b将有3个成员(当然它将是唯一的)
因此,在我的表格中,我在 GroupMembers moduleid 和 moduleentityid ( userid / groupid ) >表。
复杂部分:
如果我创建任何具有相同人员的组,那么如果有人试图创建具有相同人员的成员,那么它将不会创建新记录,而只返回现有的一个ID。如果它尚不存在,则创建新记录。
我的问题是假设我有一组x成员:a,b,c和d 和另一组成员:a和b
现在我试图通过添加c,d和组y来创建新组,所以实际上组y包含a和b所以这个组成员将是a,b,c和d并且我已经对它进行分组x所以它应该返回现有的而不是创建新的。
但是我在表格中有ModuleID和ModuleEntityID,所以我不知道如何比较它。
请至少向我提供任何链接或来源
也认为它像递归组a可能包含组b而组也包含组d和e而组e包含组x
所以我需要递归的mysql查询来解决这个问题
思考如下:
SELECT UserID FROM (
@var:=SELECT IF(ModuleID=3,ModuleEntityID,@var) as UserID FROM GroupMembers
) tbl
TIA:)