我应该在 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 中使用循环吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
我应该在 T-SQL 中使用 != 或 <> 表示不相等吗?
我应该在 T-SQL 中使用 != 或 <> 表示不相等吗?