Ниже представлено решение на основе PHP:
function countChildren($startId) {
$directDescendents = *_query("SELECT id FROM Table WHERE parentid = ?", array( $startId ));
$count = *_num_rows($directDescendents);
while($row = *_fetch_array($directDescendents))
$count += countChildren($row['id']);
return $count;
}
$numChildren = countChildren(2); // Number of Children for 'B'
Замените *_num_rows
и *_fetch_array
на любые функции для расширения SQL, которое вы используете. Это будет не так эффективно, как чистое решение SQL, но оно будет работать. Способ, которым я запрашиваю функцию, - это предполагать связанные параметры, но выполнять запрос по своему усмотрению.