Как получить все дети в двоичном дереве в стек переполнения

У меня есть ч та таблица типа

введите описание изображения здесь

Теперь нам нужно полное двоичное дерево И полное количество левых и правых каналов

2

Решение

Вам нужно будет держать функцию в цикле, а затем запустить ее, надеюсь, это поможет вам.

Спасибо

1

Другие решения

К сожалению, это нереально возможно при использовании только SQL (тот факт, что каждый узел может иметь только двух дочерних элементов, левого и правого, не помогает, поскольку узлы все еще могут быть вложены произвольно глубоко), вы должны сделать это рекурсивно, используя PHP:

function countChildren($parentId) {
$children = (`SELECT user_id FROM table where parent_id = ?`, $parentId); // Pseudocode, use a prepared statement with your ORM or MySQL library/PDO
$count = count($children);
foreach($children as $userId) {
$count += countChildren($userId);
}
return $count;
}

Однако, если вы переключите свой стол, чтобы использовать вложенный набор вместо дерева запрос к информации у детей становится намного более эффективным:

SELECT count(*) FROM table AS t JOIN table as parent_table ON (t.left > parent_table.left AND t.right < parent_table.right) WHERE parent_table.user_id = ?;
1

SELECT  leg , count(user_id)as Count FROM table GROUP BY leg

Это покажет количество левого и правого

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector