次のように設定された部品表テーブルがあります:
item - 親
部品表を表示すると、次のように表示されます。
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
私が知っているのは、アイテム 1 から始めているということだけです。アイテム 5 は 11 の親を持つことができます。順番に実行する必要はありません。ツリー内のすべての子ブランチを取得したい。mysqlでこのクエリを実行するにはどうすればよいですか?