私がこの例の線に沿って何かを持っていると仮定します:
CREATE TABLE NaiveTable
{
id BIGINT NOT NULL,
parentId BIGINT NULL,
name VARCHAR(20) NULL,
CONSTRAINT hierarchy FOREIGN KEY (parentId) REFERENCES NaiveTable(id)
PRIMARY KEY (id)
}
注意として、parentIdはNaiveTableのIDへの参照です(正確な構文を見逃した場合に備えて)。
データはこれらの線に沿ったどこかにあります
+---------+----------+----------+
| id | parentId | name |
+---------+----------+----------+
| 1 | null | node1 |
+---------+----------+----------+
| 2 | 1 | node2 |
+---------+----------+----------+
| 3 | 1 | node3 |
+---------+----------+----------+
| 4 | 2 | node4 |
+---------+----------+----------+
列名に未実現のラベルがいくつか含まれています。MySQLテーブルでSQLクエリを作成する方法を探しています。この場合、すべての情報が次のようにフラット化され、階層的に並べ替えられます。
node 1, depth 0
node 2, depth 1
node 4, depth 2
node 3, depth 1
注:データベーススキーマを変更することはできません。SQLクエリしか作成できません。またWITH
、MySQLがキーワードをサポートしていないため、キーワードを使用できません。そのようなクエリを作成する方法はありますか?ただし、 深さ2以上のソリューションは、十分であると見なされます。
編集:あなたが実験するのが好きなら、これがSQLフィドルです:)