を作るために行を横断するMySQLのクエリを使用して、私はこのように設定されている材料テーブルの法案があります
アイテム - 私は材料の法案はそれということで表示するとき、親再帰ツリー
最終結果をこのように表示されます。
item 1 - parent 0
item 2 - parent 1
item 3 - parent 1
最終的な結果はまた、このようなマルチレベルのようになります。
item 3 - parent 0
item 4 - parent 3
item 76 - parent 3
そして、それは無限に行くことができます:
item 76 - parent 0
item 46 - parent 76
item 46 - parent 0
item 25 - parent 46
今、私はどちらかだけのデータベースから1つのレベルを取得:
SELECT * FROM bom WHERE parentId = $itemId (shorthand)
するか、テーブルからすべての行を引くと、私は必要なものだけを整理するために私の再帰関数を使用し、しかし、これは私が10行しか必要としないので明らかに非効率ですが、私は10,000レコードを引っ張ります。再帰関数の出力は、ちょうどこのようなツリーを作成します。
item 1
item 2
item 3
item 4
item 76
item 46
item 25
私が知っているすべては私が11の親を持つことができます項目1項目5で始めていますということです。彼らは連続して行く必要はありません。私はツリー内のすべての子ブランチを取得したい。どうすればmysqlでこのクエリを実行できますか?
優れた手順。しかし、 'SELECT id、GetFamilyTree(id)FROM pctable;はエラーを投げます:_ERROR 1292(22007):切り捨てられた不正なDOUBLE値: '4,5'_。私はそれをデバッグしようとしましたが、無駄でした。何か考えてもらえますか?ありがとう – idok