答案 0 :(得分: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;
}
但是,如果您将表格切换为使用nested set而不是树,则查询子项以获取信息会变得更有效:
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 :(得分:1)
您将需要使函数保持循环然后运行它,希望对您有所帮助。
谢谢
答案 2 :(得分:0)
QSqlQueryModel
这将显示左右计数