ノードのリスト、各ノードの深さ、および各ノードが持つ直接の子の数を返す MySQL クエリを作成しようとしています。
この理由は、バイナリ ツリーに "次に利用可能な" スポット、つまり直接の子が 2 つ未満の最上位ノードを配置する必要があるためです。
深さを返すクエリと、ノードが持つ直接の子の数を返すクエリを見つけましたが、2 つのクエリを 1 つのクエリに結合するには、SQL の天才ではありません。ちなみに私はCakePHPを使っています。
私のテーブル構造は次のようになります。
CREATE TABLE `nodes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`f_id` int(11),
`parent_id` int(11),
`lft` int(11) DEFAULT NULL,
`rght` int(11) DEFAULT NULL,
`lastadd` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
私が見つけたいと思っているのは次のとおりです。
直接の子が 2 つ未満のノードのリストを提供します。このリストは、深度が最も低く、子が最も少なく、lastadd 日付が最も古い順に並べられています。
どんな助けでも大歓迎です。