我有一个叫foo的db表。它有以下字段:
身份证件
名称
父ID
它可以深入3层,如下所示:
foo 1(父标识:0)
foo 2(parentid:1)(foo的孩子1)
foo 3(parentid:2)(foo1和foo2的子级)
现在的问题是,在我的users表中,有一个名为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'
  )
)

10-07 13:51