PHP/MYSQL 父子关系

2024-02-24

我有一个这样的表:

  • id
  • name
  • 父 ID

然后我想根据它们的 id 选择某些行,所以像这样:

SELECT * 
  FROM TABLE 
 WHERE id IN ('1', '5', '8', '9', '35')  

我想从这个查询中也显示父/子关系,例如:

id   parent  
-----------
1    0  
5    1  
8    0  
9    8  
35   9  

所以最终的输出看起来像这样:

1  
--5  

8   
--9  
 ----35  

我是否在 mysql 之外执行此操作,我尝试过使用数组,但无法弄清楚,或者
我是在MYSQL里面做的吗,我也不知道怎么做。


这是我能得到的,看起来效果很好。

PS-抱歉格式问题,无法弄清楚:((fixed?)

  1. 我从 MYSQL 中获取parent_id 和 id 并将其放入数组中,其中数组键是 id,值是父项,因此在 mysql 的 while 循环中,如下所示:$testarray[$id] = $parent_id;
  2. 然后我通过下面的函数运行它,它会按照我需要的方式对其进行排序。

    function retrieveSubTree($parent, $myarray) {
        $tempArray = $myarray;
        $array = array();           
        //now we have our top level parent, lets put its children into an array, yea!
        while ($child = array_search($parent, $tempArray)) {
            unset($tempArray[$child]);
            //now lets get all this guys children
            if (in_array($child, $tempArray)) {
                $array[$child] = retrieveSubTree($child, $tempArray);
            } else {
                $array[$child] = true;
            }
        }//end while
        return (!empty($array)) ? $array : false;
    }
    
    function retrieveTree($myarray) {
        $array = array();
        $counter = 0;
        foreach ($myarray as $key => $value) {
            $child = $key;
            $parent = $value;
            //if this child is a parent of somebody else
            if (in_array($child, $myarray) && $parent != '0') {
                while ($myarray[$parent] != '' && $myarray[$parent] != '0') {
                    $newparent = $myarray[$parent];
                    $parent = $newparent;
                }
                if (!array_key_exists($parent, $array)) {
                    $array[$parent] = retrieveSubTree($parent, $myarray);
                }
            } else {
                //now make sure they don't appear as some child
                if (!array_key_exists($parent, $myarray)) {
                    //see if it is a parent of anybody
                    if (in_array($child, $myarray)) {
                        $array[$child] = retrieveSubTree($child, $myarray);
                    } else {
                        $array[$child] = true;
                    }
                }//end if array key
            }//end initial in array
        }//end foreach
        return (!empty($array) ? $array : false);
    } 
    
    $test = array(
        '1'=>'15',
        '2'=>'1',
        '3'=>'1',
        '4'=>'0',
        '5'=>'0',
        '6'=>'4',
        '7'=>'6',
        '8'=>'7',
        '9'=>'2',
        '10'=>'9'
    );
    
    print_r(retrieveTree($test)); 
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP/MYSQL 父子关系 的相关文章

  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 检测按下哪个键[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我如何知道
  • 未命中断点 Mono For Android (Monodroid)

    我的 monodroid 应用程序构建并运行良好 但未命中断点 这适用于物理设备和模拟器 我创建了一个新的默认 monodroid 应用程序 它确实遇到了断点 我尝试过重建 重新启动 ADB 和重新启动 我运行的是 VS2010 M4A 版
  • Firebase Google Cloud 从设备到设备的消息传递

    我无法理解如何将消息从 iOS 设备发送到另一台 iOS 设备 并试图了解两者之间的区别 Firebase 通知和 Google Cloud Messaging Firebase 通知假设您可以从服务器向设备发送消息 谷歌云消息 它将消息从
  • ElasticSearch:根据字段长度过滤文档

    我在 SO 上读到了几个类似的问题 并建议解决方案不起作用 我想找到单词短于8的所有字段 我的数据库屏幕 我尝试使用此查询来执行此操作 query match all filter script script doc word length
  • Cordova iOS 6.1.1 白色启动画面

    在我的 Cordova 应用程序中 升级到 cordova ios 6 1 1 后遇到问题 应用程序运行正常 但未显示启动屏幕 只有一个白屏 就像我的闪屏文件被忽略一样 我有这个 config xml 文件
  • 如何处理`已被弃用。在 Java 中已弃用?

    我想使用的代码 window addFlags WindowManager LayoutParams FLAG SHOW WHEN LOCKED 有FLAG SHOW WHEN LOCKED https developer android
  • 关闭 OpenMP

    在我的 C 程序中 我希望有时使用 OpenMP 有时不使用 OpenMP 即多线程或单线程 来运行其可执行文件 我正在考虑以下两种情况中的任何一种 我的代码如何使用 OpenMP 1 假设我的代码只有 include
  • 无法为 jasmine 设置超时

    我已经尝试了所有解决方案这个答案 https stackoverflow com questions 9867601 how do i change the timeout on a jasmine node async spec但他们都不
  • Spring Mvc 中从控制器返回 Hashmap 到 JSP

    我在 Jsp 中有两个下拉列表 一个用于州 另一个用于国家 一旦我选择国家 地区 国家列表就会自动填充相应的列表 但我得到整个 jsp 页面作为 ajax 调用的响应 我的ajax程序 select country change funct
  • 为什么图像没有保存在我的代码中而只是由管理页面保存?

    我需要知道为什么图像不保存在路径中 我从路径中检查 静态根和媒体根似乎都工作良好 但图像未保存 这里是代码 您可以在其中看到发生了什么 notice 该图像工作正常 并已通过管理页面安装 但无法保存或通过我的代码工作 模型 py class
  • Power Query M - 表达式错误 - 列表到文本

    我正在使用 Web Contents 执行 API 请求 我提交了一个从函数获取的动态访问令牌 let Source Json Document Web Contents https api url com endpoint id Head
  • 捕获蓝牙远程快门事件

    我想知道如何 是否可以在 android 中捕获由蓝牙远程快门事件触发的事件 例如这样的一个 http www avancaproducts com en shop other bluetooth camera shutter remote
  • 在 docker 中运行 json-server

    我一直在跑步json 服务器 https github com typicode json server使用以下配置在 docker 容器中成功运行了一段时间 泊坞窗文件 FROM node alpine EXPOSE 3000 COPY
  • 在自定义 UIGestureRecognizer 中实现速度

    我编写了一个自定义 UIGestureRecognizer 它可以用一根手指处理旋转 它的设计工作方式与 Apple 的 UIRotationGestureRecognizer 完全相同 并返回相同的值 现在 我想实现速度 但我无法弄清楚苹
  • 我应该使用 XSD 1.1 来构建开放标准吗?

    我们被要求为开放 XML 标准整合一组模式 XSD 1 0 可以处理大多数规则 但在某些地方会有点混乱 特别是考虑到可扩展性 它还依赖于实现者以注释的形式阅读某些规则的自由文本描述 几乎所有规则都可以使用 XSD 1 1 来实现 但是我们不
  • Java不发送客户端证书

    我在 Java 1 7 上使用 HttpClient 4 2 3 连接到 nginx 托管的远程服务器 我的组织广泛使用 PKI 并且远程和客户端都具有由通用 CA 颁发的证书 服务器有一个如下的签名链 CN Server 123 OU S
  • .NET 中泛型集合和非泛型集合之间的内存使用差异

    我读到收藏品如今在 NET 中 众所周知 使用有一些优点通用集合 over 非通用的 它们是类型安全的 没有转换 没有装箱 拆箱 这就是通用集合具有性能优势的原因 如果我们认为非泛型集合将每个成员存储为object 那么我们可以认为泛型也具
  • 适用于 OS X 的虚拟 HID 键盘

    我正在尝试创建一个虚拟的蓝牙Mac 操作系统的键盘客户端 这意味着我的 Mac 将充当 BT KB 我读到了 OS X 中的蓝牙 API 在 ObjC 中 并且我还发现了适用于 Mac 的 HID API 在 C 中 为了完成这项工作 我知
  • 如何使用Android Studio获取代码覆盖率?

    我正在使用 Android Studio 开发应用程序 我能够运行测试代码 但是 我不知道如何在 android studio 中获得代码覆盖率 我已经看过以下链接 Android Gradle 代码覆盖率 https stackoverf
  • PHP/MYSQL 父子关系

    我有一个这样的表 id name 父 ID 然后我想根据它们的 id 选择某些行 所以像这样 SELECT FROM TABLE WHERE id IN 1 5 8 9 35 我想从这个查询中也显示父 子关系 例如 id parent 1