是否可以编写递归的mysql查询来解决复杂的逻辑问题

时间:2016-03-22 04:47:26

标签: php mysql

我有一个复杂的小组模块计划。

表格结构:

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:)

0 个答案:

没有答案