【问题标题】:Should I use a loop in sql or php? [duplicate]我应该在 sql 或 php 中使用循环吗? [复制]
【发布时间】:2012-02-03 21:44:07
【问题描述】:

可能重复:
What is the most efficient/elegant way to parse a flat table into a tree?
php / Mysql best tree structure

我的数据库中有一个充满组的表,每个组行都有一个父 ID,直到最后一个父 ID 为 0,形成一个金字塔。例如:

id: 1 姓名:工作人员 父母:0

id:2 名称:通讯组 父母:1

id:3 名称:网络部 父母:2

现在这可以永远持续下去,所以我想要做的是使用一个 sql 语句提供网络部门 ID,它将拉动所有父组,直到父组为 0。

这可能在 sql 语句中吗?我怎么能这样做?

【问题讨论】:

    标签: php mysql hierarchical-data


    【解决方案1】:

    我认为你根本不需要循环......在 T-SQL 中就是这样的:

    SELECT id, name, parent
    FROM tablename
    WHERE parent <= (select parent from tablename where name = 'staff')
    ORDER BY parent;
    

    这应该返回父 ID 小于或等于员工父 ID 的所有行。如果您希望它以其他方式排序,请改用 ORDER BY parent ASC。

    【讨论】:

    • 嗯,父母不会总是小于,ID是随机创建的,所以如果我做的小于我将得到所有父母和组在此之前创建。
    • 您能否详细说明此语句,然后:
      所以我想要做的是使用一个 sql 语句给出 web 部门 ID,它将拉所有父组,直到父组为 0 .
      我想我不明白,听起来你是从当前条目中检索它们,直到父级为 0...所以从当前 ID 到 0。你能改写一下吗?
    【解决方案2】:

    您从 sql 中提取您可能需要的所有内容,然后使用 PHP 中的递归函数来遍历结果。寻找 PHP 递归树。

    【讨论】:

    • 哦,我明白了,就像从 sql 中提取所有内容,然后对 php 中的垃圾进行排序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多