У меня есть ч та таблица типа
Теперь нам нужно полное двоичное дерево И полное количество левых и правых каналов
Вам нужно будет держать функцию в цикле, а затем запустить ее, надеюсь, это поможет вам.
Спасибо
К сожалению, это нереально возможно при использовании только 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 = ?;
SELECT leg , count(user_id)as Count FROM table GROUP BY leg
Это покажет количество левого и правого