2012-01-11 6 views
1

5を取得し、次のシナリオを持っている:id(int)parentId(int)MySQLの再帰 - すべてのサブ要素

私は2つの列を持つデータベーステーブルを持っています。

は私のデータは、今私は祖先のように特定の要素を持っているすべての要素をリストクエリを記述したいと思い、この

id parentId 
1 null 
2 1 
3 1 
4 3 
5 3 
6 4 
7 4 
8 6 

のように見えると言うことができます。これはどうすればできますか?

たとえば、祖先として4を持つすべての要素が必要です。 6,7,8

+1

が重複する可能性:// stackoverflowの。コム/質問/ 4006974/mysqlの-PHP-質問-GET-親-ID-recrusive) –

+0

コードに再フォーマットが、意味をなさないのセクションがあります。それは '5の前に欠落しているテキストがあるように見えるし、次のように持っています'? – msanford

+0

重複:http://stackoverflow.com/questions/4345909/mysql-recursion – jlarson

答えて

0

テーブルは、階層データのadjacency list modelの例です。これには既知の制限があります。これには、必要なものを実行する単一のクエリを記述することが不可能なことも含まれます。 (あなたは、深さの制限を課すことにより、単一のクエリを行うことができますが、それは痛いです。)

は、このためのより良い構造がnested set modelだろう。ネストされたセットモデルがどのように機能するかについては、実装するためのたくさんのSQLコードを含めて、素敵な記事hereがあります。

0

MySQLは、他のRDBMSは、このようなMSSQL 共通テーブル式(CTE)として持っており、Oracleのは、シンプルかつ効率的な隣接リストで作業しますで接続します。階層的な機能が欠けています結果として、次のような何かをする必要があります:

Generating Depth based tree from Hierarchical Data in MySQL (no CTEs)

希望はこのことができます:) [mysqlのPHPの質問を取得親ID recrusive](HTTPの

関連する問題