単一のテーブルに対してクエリを作成する必要があります。次のようなテーブル構造とその中のいくつかのダミーデータ
id | username | seniorid
1 | Superuser | -1
2 | user1 | 1
3 | user2 | 1
4 | user3 | 3
5 | user4 | 4
6 | user5 | 1
7 | user6 | 6
8 | user7 | 6
9 | user8 | 8
10 | user9 | 9
11 | user10 | 8
12 | user11 | 8
13 | user12 | 8
14 | user13 | 6
15 | user14 | 3
16 | user15 | 2
17 | user16 | 8
18 | user17 | 8
上記の表では、スーパーユーザーは 1 人だけです。これは、ユーザー階層のトップ レベルになります。このスーパーユーザーは、seniorid が -1 の唯一のユーザーです。スーパーユーザーはすべてのユーザーの親です。上記の表では、すべてのユーザーに子ユーザーが存在する場合と存在しない場合があります。親ユーザーと子ユーザーの関係は表に記載されており、seniorid の数字は他のユーザーの ID にすぎません。
例えば:
次のユーザーを検討してください
id | username | seniorid
18 | user17 | 8
上記の場合、seniorid は 8 なので、上記のユーザーの親は
8 | user7 | 6
「user7」6のsenioridとして、親が
6 | user5 | 1
このようにバックトラックを行うと、「スーパーユーザー」から「user17」までの階層の次のリストが取得されます
id | username | seniorid
1 | Superuser | -1
6 | user5 | 1
8 | user7 | 6
18 | user17 | 8
この階層には最大 n レベル、つまり最大多数のレベルがあります
単一のクエリを使用して、上記の階層結果が必要です。
上記のクエリを作成するには、あなたの助けが必要です。誰でもmysqlでそのようなクエリを教えてください。
1 回のクエリで調べる必要があるシニア ユーザー リストを持つユーザーの ID、ユーザー名、シニア ID があります。ここで、単一のクエリとは、複数のネストされたクエリが含まれている可能性があることを意味します。しかし、全体としては、単一のクエリとして起動されます。