我有一个名为 foo 的数据库表。它有这些字段:
- 编号
- 姓名
- 父级
它可以深入 3 层,如下所示:
- Foo 1 (parentId : 0)
- Foo 2 (parentId: 1) (foo 的 child 1)
- Foo 3 (parentId: 2)(foo1 和 foo2 的 child )
- Foo 2 (parentId: 1) (foo 的 child 1)
现在的问题是,在我的用户表中,有一个名为 fooId
的字段。我想获得属于顶级 foo 的所有用户。
例如,如果用户的 fooId 是 3,而我想获得与 fooId 1 相关的所有用户(来自上面的示例),那么该用户应该被计算在结果中。
如果只有两层深,我可以这样做:
`SELECT stuff FROM users, foo WHERE foo.parentId = '1' AND user.fooId = foo.id
但是在目前的情况下我该怎么做呢?
最佳答案
我确定我的逻辑在某些时候搞砸了......但它可能会让你朝着正确的方向前进
SELECT stuff
FROM users, foo
WHERE (foo.parentId = '1' AND user.fooId = foo.id)
OR user.fooId IN (
SELECT fooid from foo where parentID IN (
SELECT fooid from foo where parentID = '1'
)
)
关于php - 嵌套/递归 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965119/