php - 嵌套/递归 MySQL 查询

标签 php mysql database recursion nested

我有一个名为 foo 的数据库表。它有这些字段:

  • 编号
  • 姓名
  • 父级

它可以深入 3 层,如下所示:

  • Foo 1 (parentId : 0)
    • Foo 2 (parentId: 1) (foo 的 child 1)
      • Foo 3 (parentId: 2)(foo1 和 foo2 的 child )

现在的问题是,在我的用户表中,有一个名为 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/

相关文章:

php - 有没有一种方法可以像在数据库中使用 WHERE LIKE sql 一样使用 Zend Search Lucene?

php - 使用 $smarty 显示来自 mysql 数据库的数据时出错

mysql - for循环和mysql Node 如何等待所有查询完成才能处理 View

mysql - Laravel 5 表单信息突然变空

javascript - Qt访问Websql数据库

php - Memcached 响应时间过长

php - 如何通过添加从 HTML 表单收到的数字来更新 SQL 中的表字段?

PHP 日期函数跳过二月。有人知道解决此日期错误的方法吗?

php - 如何优化我的查询以免达到最大执行时间?

MySQL ORDER BY 使用文件排序(2 个连接表)