2012-02-23 11 views
-1

私はすべてのルートレベルとその関連サブカテゴリを管理する単一のテーブルを持つデータベーステーブルを持っています。MySQLの親サブレベルテーブルの単一DBテーブルの結果としてのチェーン/親ベースのドロップダウン表示

以下

は同じ、私のSQLテーブルのテーブルとデータ構造です:

id label pid 
     1 Parent 1 0 
     2 Parent 2 0 
     2 Parent 2 0 
     3 Child 1.1 1 
     4 Child 1.2 2 
     5 Child 2.1 2 
     6 Child 1.1.1 3 
     7 Child 1.1.2 3 

、私は最初のレコードがpidの私のルートレベルのカテゴリラベルである私は結果与えられる単一のクエリを、したいです0の場合は、そのサブカテゴリのpidが1で、pidがラベルのidの代わりにに表示されます。addページ

私はここで何を言おうとしていますか?

あなたの素早い対応を楽しみにしています。それは結果の単一レベルを生成して、コメント

から

編集は、これまで試みたが、成功しませんでした。

SELECT p.Name, s.Name FROM Categories s LEFT JOIN Categories p ON s.mainCat = p.ID ORDER BY p.Name, s.Name; 
+0

私は以下のクエリを試してみましたが、その結果は1つのレベルになります。すべての結果セットのチェーンが必要です。親レベルはサブレベルで、親レベルはここでは名前です。ラベルSELECT p.Name、s.Name FROMカテゴリ LEFT JOINカテゴリp ON s.mainCat = p.ID ORDER BY p.Name、s.Name; –

+0

私の結果セットは、私の質問に貼り付けた上記の私の結果を表示するが、私は必要な詳細と単一のクエリで述べた結果が必要 –

答えて

0

ショートバージョンが階層ツリーをやろうとしているように見えるということでした、と私は、この上の様々な方法を試してきた一方で、以下のリンクの1 desribedは、たとえ長期的に最も効率的と思われます最初にセットアップするにはもう少し作業が必要です。私は同様の問題をカバーして上記の記事、そしておそらくこの質問を読んでお勧めする詳細については

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

Create a multiselect drop down with parent-child menu items

(私はそこに与えた答えへの直接リンクは、ほとんど同じですが、より多くの説明/根拠と言います)

https://stackoverflow.com/a/9377018/1213554

現時点では、あなたの重要な問題は、それがありますどの子リンクがどの親につながっているかを示す明確なリンクフィールドはありません。理想的には、上記のツリーメソッドを使用するか、最も基本的な方法として、parentIDフィールドを0(ルート要素)またはPRIMARY KEY id列にすることによって行う必要があります。これにより、各子供の親が何であるかをより簡単に判別することができます。

関連する問題