我有一个名为foo的数据库表。它有以下几个领域:
它可以深入3级,如下所示:
现在的问题是,在我的用户表中,有一个名为fooId
的字段。我希望得到属于顶级foo的所有用户。
例如,如果用户的fooId是3,并且我想让所有用户都与fooId 1相关(来自上面的示例),则应该在结果中计算该用户。
如果只有两个级别,我可以这样做:
`SELECT stuff FROM users, foo WHERE foo.parentId = '1' AND user.fooId = foo.id
但是我怎么能在目前的情况下这样做呢?
答案 0 :(得分:1)
我确信我的逻辑在某些方面已被搞砸......但它可能会让你朝着正确的方向前进
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'
)
)
答案 1 :(得分:1)
可能是这样的......
SELECT stuff FROM users, foo WHERE foo.parentId = '1' AND user.fooId = foo.id UNION SELECT stuff FROM users WHERE fooId = '3'
编辑:
SELECT stuff FROM users, foo WHERE foo.parentId = '1' AND user.fooId = foo.id UNION ALL SELECT stuff FROM users WHERE fooId = '3'