一次性选择多个关系ID(MYSQL)

时间:2012-06-29 07:58:07

标签: php mysql codeigniter

所以我们有:

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然后进行其他查询来一次性地选择它,而不是在许多查询中进行查询 - 我觉得这不好看

你知道吗?

2 个答案:

答案 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的用户,然后填充他们的孩子

https://stackoverflow.com/a/9937130/876117