所以我们有:
table users
id name password parent_id
第一个用户拥有id 1,其他用户拥有parent_id 1,所以我选择所有拥有parent_id == 1的用户 - 他们是1的用户的孩子,好吧可以,但现在我需要在具有id的用户之前选择具有所选父项ID的用户(如果它们当然存在
) user with id 1
/ | \
/ | \
/ | \
users with parent_id 1
user id 2 user id 3 id user 4
| | |
| | |
| | |
并且在这里是相同的,我需要为每个用户选择具有parent_id 2,3,4的所有用户,它从顶部到底部就像金字塔(三角形)
所以问题是如何通过提取id然后进行其他查询来一次性地选择它,而不是在许多查询中进行查询 - 我觉得这不好看
你知道吗?答案 0 :(得分:0)
这是一个问题,涵盖了您的问题:
Is it possible to query a tree structure table in MySQL in a single query, to any depth?
以下查询仅适用于查找单个用户的子女和子女,并且是误解问题的产物!
您可以尝试两次加入user
表。
SELECT * FROM users as up
JOIN users as u on up.id=u.parent_id
JOIN users as uc on u.id=uc.parent_id
WHERE up.id={$grandParentUserId}
别名:up =用户的父母,u = user,us =用户的孩子。
绝对不是一个漂亮的解决方案,但它只是一个请求。
答案 1 :(得分:0)
我看到你正在使用CI。你可以看看这个答案。与你的问题有些相关。您可以先选择NULL
父ID的用户,然后填充他们的孩子