これは最近のインタビューで私に尋ねられました。バイナリ ツリーは、次のスキーマのデータベースに格納されます
テーブル ツリー (int nodeId、int parentId、int データ)
これは自己参照テーブルです。ルートから特定のノードまでのパスにあるすべてのノードのデータを出力するクエリを作成するように依頼されました。1回のクエリでそれを行うことは可能ですか?
私が提供した解決策は、キーをnodeId、値をparentIdとしてすべての行をhashMapにロードし、マップを使用して特定のノードからルートへのパスを出力することでした。
バイナリ ツリーのノードの深さがわかっている場合は、ネストされたクエリを記述してこれを出力できます。ルートから深さ 2 にある nodeId='4' のノードまですべてのノードを出力するサンプル クエリは次のとおりです。 Tree n1 where nodeId in (select pId from Tree n2 where nodeId='4'); "
ネストされたクエリを使用せずにこれを行うことは可能ですか? もしそうなら、これを行うためにどのクエリを使用できますか?