我使用了三张桌子,这证明这个问题超出了我的范围。
第一个是看起来像这样的层次表
USER_ID, USER_LEVEL, Store_Manager_ID, Team_Manager_ID
------------------------------------------------------
1, 0, -, -
2, 1, 1, -
3, 2, 1, 2
4, 2, 1, 2
5, 2, 1, 2
这只是显示了用户的层次结构。所以用户 1 的级别为 0,这意味着他是商店经理,所以他上面没有商店经理,所以他的商店经理 id 什么都不是,团队经理显然什么都不是。第二个用户是团队经理,所以 level = 1,store manager 是 1(第一个人) 第三个,第四个和第五个分别是 1 和 2 岁以下的工人。
第二个是一个看起来像这样的登录表
USER_ID, EMAIL
--------------------------
1, john.smith@gmail.com
2, ron.jones@gmail.com
3, tom.graham@gmail.com
4, bill.small@gmail.com
邮箱是登录名,没有密码。
第三个是一个别名表,看起来像这样
USER_ID, ALIAS_ID
--------------------
2, 5
别名表显示了用户 5 是用户 2 的别名。所以他是同一个人并且具有相同的登录名。但是,他可以同时在层次结构中的两个位置,即同时是团队经理和工人。
我的问题是。如果我知道用户 2 将以他的别名登录,即登录前的工作人员。当用户2登录时,如何根据级别选择用户帐户的领导者ID。
例如,如果我在我的别名帐户下以 ron.jones@gmail.com(用户 2)身份登录。用户 2 的别名 id 是 5,基于层次结构,用户 5 是 2 级,即工人,所以我应该返回他的团队经理的 id,而不是他的商店经理。所以我会返回 2,即他自己(在这种情况下有点奇怪,但除此之外)