我应该在 sql 或 php 中使用循环吗? [复制]

Posted

技术标签:

【中文标题】我应该在 sql 或 php 中使用循环吗? [复制]【英文标题】:Should I use a loop in sql or php? [duplicate] 【发布时间】: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 语句中吗?我怎么能这样做?

【问题讨论】:

【参考方案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 中的垃圾进行排序?

以上是关于我应该在 sql 或 php 中使用循环吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在PHP中循环插入查询[重复]

我应该在 T-SQL 中使用 != 或 <> 表示不相等吗?

我应该在 T-SQL 中使用 != 或 <> 表示不相等吗?

SQL 连接或 PHP 循环?要不然是什么?

php/sql ...我应该如何使用 50mb 文件中的数据?

php SQL语句有and也有or应该怎么处理呢?