当前位置: 首页 > 面试题库 >

MySQL + PHP的检索叶的孩子与路径

华星驰
2023-03-14
问题内容

我有一张像这样的桌子。

+-----------+-----------+-----------+-----------+-----------+-----------+
|id         | parent_id | name      | order     | status    | date_add  |
+-----------+-----------+-----------+-----------+-----------+-----------+
|1          | 0         | shoes     | 1         | 1         | 2011-04-02|
+-----------+-----------+-----------+-----------+-----------+-----------+
|2          | 1         | male      | 2         | 1         | 2011-04-02|
+-----------+-----------+-----------+-----------+-----------+-----------+
|3          | 1         | female    | 3         | 1         | 2011-04-02|
+-----------+-----------+-----------+-----------+-----------+-----------+
|4          | 3         | red shoes | 4         | 1         | 2011-04-02|
+-----------+-----------+-----------+-----------+-----------+-----------+

我只想选择叶子的孩子,以及他们的路径。

我想得出如下结果:

+------+-------------------------------------+
| 2    | shoes/male                          |
+------+-------------------------------------+
| 4    | shoes/female/red shoes              |
+------+-------------------------------------+

如果这不仅是sql,还可以是php + sql

请帮我。


问题答案:

非常简单的解决方案,使用PHP打印出ID和所有最后一个子节点的路径,因为我不知道在MySQL中这样做的方法。希望这可以帮助!

function getChildren($parent= "", $x = 0) {
   $sql = "SELECT id, name FROM recurr WHERE parentId = $x";
   $rs = mysql_query($sql);
   //echo "Name: $parent has ". mysql_num_rows($rs)." children<br/>";
   while ($obj = mysql_fetch_object($rs)) {
      if (hasChildren($obj->id)) {
         getChildren($parent."/".$obj->name, $obj->id);
      } else {
         echo $obj->id .", ".$parent."/".$obj->name."<br/>";
      }
   }
}

function hasChildren($x) {
   $sql = "SELECT * FROM recurr WHERE parentId = $x";
   $rs = mysql_query($sql);
   if (mysql_num_rows($rs) > 0) {
      return true;
   } else {
      return false;
   }
}

要运行,只需致电:

getChildren();


 类似资料:
  • 问题内容: 可能存在但可能不存在。我该如何检查? 问题答案: 如果不存在,则其值为(或者更确切地说,将没有任何值)。但是请注意,对于这个工作,既和需要不。否则,PHP将抛出错误(我认为)。

  • 上面的函数将包含二叉树每个叶的路径的数组附加到全局数组。 代码工作正常,但我想删除全局变量,并使函数返回数组。我怎么能那样做?

  • 问题内容: 我在父容器中有两个子元素,如下所示: 我尝试了以下CSS: 我怎样才能让两个孩子()都达到最高的孩子的身高? 问题答案: 一种解决方案是将后代元素的显示值从更改为:

  • 问题内容: 我有两个表,一个存储数据的子级和父级,其他路径和后代 我需要获取所有具有父代1的用户ID,然后获取其他表中的子代,并按用户ID总和价格分组 我已经查询了所有孩子的总和 这项工作很好,但父母总和为1 我需要显示直接儿童的波纹管结果(2,3) 也在创建sqlfiddle我的问题http://sqlfiddle.com/#!9/9415ed/2 问题答案: 试试这个;) 已编辑

  • 这样不仅可以将转移页面的子元素放入数组,还可以将子元素的子元素放入数组。

  • 问题内容: 我正在重构一些旧代码,包括重写基本的mysql查询以使用PDO。 以下内容在所有浏览器和所有图像类型中均能出色发挥作用: 不幸的是,但是我使用PDO重写了它,但是它不起作用。我已经遍历了整个PDO文档和标准的Web搜索,但是所有建议/解决方案都无效。 如何使用PDO轻松地从MySQL中获取图像并显示图像? 编辑1: 马修·拉兹洛夫(Matthew Ratzloff)在下面给出了明显的答