はので、私はChildOf = 0 ...シンプルな権利を持つすべてのレコードを選択するクエリを記述する必要がテーブルサブクエリ
Tasks
--
TaskId (unique autoinc primary)
ChildOf (Contains task ID of parent, or 0 if top tier (no parent))
がありますか?
[OK]をだけでなく、別の列は、各タスクが持っているどのように多くの子供告げる結果で返されている必要があり...
だから、結果は次のようになります...
TaskID ... ChildOf ... countChildren
37 ...... 0 .... 3
42 ...... 0 .... 0
99 ...... 0 .... 1
etc....
私が知っています私は必要な2つのクエリが...
Select TaskId as ParentTaskId, ChildOf from Tasks where ChildOf = 0
と
次のようなものですが、何とかそれらを結合する必要がありますSelect count(TaskId) from Tasks where ChildOf = ParentTaskId
注:親子は... 2人の層しかありません...孫がいません!だからうまくいけばそれはそれほど複雑ではありません。
ご協力いただきまして誠にありがとうございます。これまでのすべての助けをありがとう!このような
MySQLは今ANSIである再帰的な機能を欠いています。 MySQLのサイトでは、MySQLの階層データを扱う方法について素晴らしい記事がありましたが、Oracleはこれを取り除いているようです:/ –
しかし、複数のレベルの子供を取得する必要がある場合は、再帰的な機能が必要です。それ以外の場合は単純なサブクエリです。だからブライアン、すぐにノードの数が必要ですか、ツリー全体(子供の子供たち)を数える必要がありますか? –
優秀な質問...私はちょうど1つのレベルが必要です..親 - >子なし孫。 –