2017-01-21 10 views
0

MySQLデータベースは、マテリアライズドパスのデータ構造の助けを借りてツリーを格納します。与えられたノードのすべての親を選択するには?SQL:マテリアライズドパス内のすべての親ノードを選択する方法は?

私はドット 'を使用します。パスセパレータとして使用され、データベース構造には、ツリー内のノードの深さを示す「レベル」フィールドが含まれます。

は、私はそれらの木を持っており、ノードのa.b.d.e "のすべての親を必要とすることができます:

id | path 
a | a 
b | a.b 
c | a.b.c 
d | a.b.d 
e | a.b.d.e 
f | a.f 

スクリプトが返す必要があります:

a 
a.b 
a.b.d 
a.d.d.e (optional) 

MySQLの中でそれを行うには?

答えて

0

解決策は、question posted by @quamboにあります。ここにあります:

Insted of '?'指定されたノードにパスを配置する必要があります。

SELECT * FROM table 
WHERE 'a.b.d.e' LIKE id||% 
ORDER BY path 
関連する問題