私が使用しているテーブルは3つあり、この問題が私のリーグから大きく外れていることが証明されています。
1つ目はこのような階層型テーブルです
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は何もありません。また、チームマネージャーは明らかに何もありません。2番目のユーザーはチームマネージャーであるため、レベル= 1で、ストアマネージャーは1(最初の男)です。3番目、4番目、5番目は、それぞれ1歳未満と2歳未満の労働者です。
2つ目は、次のようなログインテーブルです。
USER_ID, EMAIL
--------------------------
1, john.smith@gmail.com
2, ron.jones@gmail.com
3, tom.graham@gmail.com
4, bill.small@gmail.com
メールはログインであり、パスワードではありません。
3つ目は、次のようなエイリアステーブルです。
USER_ID, ALIAS_ID
--------------------
2, 5
エイリアステーブルは、ユーザー5がユーザー2のエイリアスである方法を示しています。したがって、彼は同じ人物であり、同じログインを持っています。ただし、彼は同時に階層内の2つの場所、つまりチームマネージャーとワーカーに同時にいることができます。
私の質問はです。ユーザー2がエイリアス、つまりログイン前のワーカーとしてログインすることがわかっている場合。ユーザー2がログインするときに、レベルに基づいてユーザーアカウントのリーダーのIDを選択するにはどうすればよいですか。
たとえば、エイリアスアカウントでron.jones@gmail.com(ユーザー2)としてログインした場合です。ユーザー2のエイリアスIDは5であり、階層ユーザー5に基づくとレベル2、つまりワーカーであるため、ストアマネージャーではなくチームマネージャーのIDを返す必要があります。したがって、私は2、つまり自分自身を返します(この場合は少し奇妙ですが、要点以外に)