PHP 中的 MPTT(修改的先序树遍历)问题

2024-05-06

我的第一篇文章在这里!看来这是一个变得明智的地方;)

我目前正在进行一些测试,第一次尝试使用 MPTT(修改的预序树遍历)方法在 PHP 的帮助下将数据存储在 Mysql 数据库中。

但是,我试图找到最注重性能的方法来获取特定级别上的所有列表元素,并具有特定的父元素。

如果输入的家长名为“Bilar”,则可以转化为从下图中获取 Saab 和 Chrysler 类别。 (这在瑞典语中是“汽车”的意思,如果这不是你最强的一面;))

由于我无法发布图片,这里是流程图的链接:http://www.phpsidan.nu/files/mptt/mptt1.png http://www.phpsidan.nu/files/mptt/mptt1.png

目前,我一直在执行两个查询来执行我想要的操作,并使用相当多的代码来计算级别并吐出同一级别上的所有其他元素。

有没有更好的方法来做到这一点并且希望只使用一个查询?

多谢!


我确信这可以优化,但是假设您有“name”、“lft”和“rgt”列,下面将为您提供“Bilar”的 2 级同级。

SELECT node.name,                                                                                                                                     
       node.lft AS sort,                                                                                                                                                                                                                                                               
       (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth                                                                        

FROM car AS node,                                                                                                                                  
     car AS parent,                                                                                                                                
             car AS sub_parent,                                                                                                                            
             ( SELECT node.name, (COUNT(parent.name) - 1) AS depth                                                                                          
                 FROM car AS node,                                                                                                                         
                      car AS parent                                                                                                                        
                WHERE node.lft BETWEEN parent.lft AND parent.rgt                                                                                            
                  AND node.name = "Bilar"                                                                                                                       
             GROUP BY node.name                                                                                                                             
             ORDER BY node.lft) AS sub_tree

WHERE node.lft BETWEEN parent.lft AND parent.rgt                                                                                                     
  AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt                                                                                             
  AND sub_parent.name = sub_tree.name

GROUP BY node.name HAVING depth <= 2                                                                                                                 
ORDER BY node.lft
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 中的 MPTT(修改的先序树遍历)问题 的相关文章

  • Laravel 5:如何检索并显示属于特定类别的所有帖子

    我有3张桌子 user id username subreddits id name created at posts id title link user id subreddit id 问题是 我手动获取 subreddit 类别的 i
  • Laravel - LIKE 运算符来搜索加密值

    我正在尝试在 Laravel 应用程序中实现一个搜索模块 可以按名称过滤用户 为了保护用户 name 列行在数据库上加密 我面临的问题是下面的查询总是返回 0 结果 我在搜索数据库之前对搜索输入值进行加密 patients DB selec
  • Yii 2.0 AJAX 请求的 CSRF 验证

    我有一个ajax触发从我的数据库中删除条目的函数 我需要去做CSRF验证相同 我怎样才能做到这一点 我正在发送CSRF cookie连同我的帖子请求 但是Yii 2 0不验证它 并且通过 ajax 传递的任何输入都会到达服务器 我该怎么做C
  • PHP crypt() Blowfish 函数不工作

    这是我第一次在 PHP 中使用 crypt 函数 我不明白为什么它不起作用 我的代码基于这篇文章 http www techrepublic com blog australia secure passwords with blowfish
  • 无法上传大于 8MB 的文件

    我正在尝试制作一个文件上传脚本 并且我已经为这个问题苦苦挣扎了一段时间 我已阅读并尝试了与此相关的所有答案 但无济于事 这是我在 php 中尝试过的 文件名 file uploads On upload max filesize 100M
  • 帮助我将以十六进制表示的长值转换回日期/时间

    我有一个日期值 据说它是 8 个字节 一个 long 又名 int64 值 并转换为十六进制 60f347d15798c901 我如何使用 PHP 将这个和类似的值转换为时间 日期 将其转换为十进制给我 96 243 71 209 87 1
  • WP_Query 相同的请求,不同的语法 - 其中之一不起作用

    我有一个运行良好的 WP Query args array post type gt product meta key gt product subtype meta value gt public compare gt 但当我想搜索多个m
  • 在大文件中查找重复项

    我有一个非常大的文件 大约有 1500 万个条目 文件中的每一行都包含一个字符串 称为键 我需要使用 java 查找文件中的重复条目 我尝试使用哈希图并检测重复的条目 显然 这种方法向我抛出了 java lang OutOfMemoryEr
  • 如何将html表单中的信息写入MySQL数据库

    好吧 我正在建立一个带有表单的网站 我想将用户在表单中输入的所有信息保存到我的 MySQL 数据库中 表单的编码如下
  • 如何在不刷新的情况下向字段中插入数据?

    我需要知道如何在不刷新字段的情况下从数据库添加数据 我的意思是就像在电子邮件中添加联系人的工作一样 如果我单击 添加 按钮 我需要打开一个小窗口和其中的联系人 如果我检查一两个联系人并按插入键 它应该被插入到 收件人 字段中 而无需刷新父页
  • 通过单击按钮更改 PHP include ("link.php")

    如何通过单击按钮更改 PHP include link html BUTTON 1 change to BUTTON 2 change to BUTTON 3 change to 如何在不刷新页面的情况下执行此操作 使用ajax Wrap
  • 如何在 PHPUnit 中跨多个测试模拟测试 Web 服务?

    我正在尝试使用 PHPUnit 测试 Web 服务接口类 基本上 这个类调用肥皂客户端目的 我正在尝试使用 PHPUnit 测试此类getMockFromWsdl这里描述的方法 http www phpunit de manual curr
  • 按索引偶数或奇数将数组拆分为两个数组

    我有这个数组 array array a b c d e f g 我想根据索引是偶数还是奇数将其分成两个数组 如下所示 odd array a c e g even array b d f 提前致谢 一种解决方案 使用匿名函数和array
  • WSDL 中的数组响应 - SOAP PHP

    在我的 wsdl 代码中 我得到一个整数 我想返回数组中的结果 为什么在我的输入中我只有一个整数 而我需要数组中的结果 因为在我的 php 函数中 我想从客户端选择的整数中的数据库返回信息 例如 我的客户发送1 在我的php中 我从数据库中
  • PHP 的 USORT 回调函数参数

    这是一个非常深奥的问题 但我真的很好奇 今天是我多年来第一次使用 usort 我对到底发生了什么特别感兴趣 假设我有以下数组 myArray array 1 9 18 12 56 我可以用 usort 对此进行排序 usort myArra
  • WooCommerce:在未登录用户的结帐页面中默认设置国家/地区

    如何将国家 地区设为常规 未注册用户 的默认国家 地区 但如果买家有个人账户并进入该国 他在结帐时不会被拖欠吗 我尝试过使用WooCommerce 在结帐页面中默认设置国家 地区 https stackoverflow com questi
  • python数据结构(类似设置)在添加重复项时抛出异常

    我正在寻找一种在添加重复元素时会引发异常的数据结构 我发现的最接近的是collections Counter gt gt gt from collections import Counter as counter gt gt gt c co
  • 如何使用 JQuery 提取嵌套 HTML 中的文本?

    我这里有 HTML 代码 div class actResult style border solid table tbody tr td Order Number td td 1 td tr tr td Customer Number t
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • Zend 1.11 和 Doctrine 2 自动从现有数据库生成所需的一切

    我是 ORM 新手 我真的很想学习它 我按照本教程成功地使用 Zend 1 11 x 安装了 Doctrine 2 1 的所有类和配置 http www zendcasts com unit testing doctrine 2 entit

随机推荐

  • 在 postgres 中选择时保留顺序[重复]

    这个问题在这里已经有答案了 在 psql 中 至少在 v9 中 如果我这样做 select id from users where id in 2 1 1 and select id from users where id in 1 2 它
  • D3.js 中的点图

    我有兴趣创建一个Dot plot 每个数据值都有连续的点 但到目前为止我所管理的是为每个值创建一个点 更清楚地说 假设对于 array1 我希望第一个值创建 5 个圆圈 第二个值创建 4 个圆圈 依此类推 array1 5 4 2 0 3
  • 获取在电池电量降至 0% 之前我还有多少时间 Android

    我能知道电池电量降至 0 之前还有多少时间吗 使用的东西CountDownTimer并计算一下电池消耗了多少毫安时 有人可以帮我做吗 您无法准确猜测电池还剩多少时间放电 您只能做一些估计 您可以通过注册接收器进行操作 在广播接收器的帮助下获
  • matplotlib 中的背对背直方图

    有一个很好的函数可以绘制背靠背直方图 http www mathworks co uk matlabcentral fileexchange 23312在Matlab中 我需要在 matplotlib 中创建一个类似的图表 谁能展示一个有效
  • 在 IntelliJ 中设置 Glassfish 配置时出现“管理端口配置未找到”错误

    在 IntelliJ IDEA 中设置 Glassfish 时 我收到以下错误消息 未找到管理端口配置 现在我到处搜索 但没有找到可以设置管理端口的地方 搜索谷歌我发现的是JavaRanch 上的死链接 http www coderanch
  • 即使在签出到另一个分支后也无法删除本地分支

    我正在尝试删除我的本地分支并尝试了我在这里找到的大多数解决方案 即签出到另一个分支然后运行git branch D or d
  • 如何快速更改 SKSpriteNode 的颜色?

    我创建了一个游戏SKSpriteNode那是黑色的 当用户触摸屏幕时我想要SKSpriteNode更改为白色 我已经用谷歌搜索了一切 并尝试了很多不同的策略 但没有成功 有谁知道如何做到这一点 这是我的场景的代码 var blackBird
  • 将 ART.xcodeproj 添加到 Library 后 Xcode 崩溃

    我正在使用 React Native 开发一个应用程序 将 ART xcodeproj 添加到 Library 后 Xcode 崩溃了 这是版本信息 版本 9 0 beta 4 9M189t Some 崩溃的日志如下 Process Xco
  • 通过鼠标和触摸在画布上绘图

    我想在画布上绘图 使用鼠标效果很好 但我必须如何修改代码才能使其在 iPad 或 Nexus 上运行 link http jsfiddle net FgNQk 6 var canvas document getElementById can
  • PHP-MySQL 或 MySQLi 中哪个最快?

    我想知道是否有人对这种二分法有任何第一手经验 一些博客说 mysql 扩展比 mysqli 更快 这是真的 我只是问速度 我知道 mysqli 具有旧扩展中不存在的功能 在我看到的大多数基准测试中 MySQL 扩展比 MySQLi 稍快一些
  • 无逻辑模板(例如胡子)有什么优点?

    最近 我遇到了mustache http mustache github com 据称是无逻辑模板 然而 没有解释为什么它是以无逻辑的方式设计的 换句话说 无逻辑模板的优点是什么 换句话说 它可以防止你搬起石头砸自己的脚 在过去的 JSP
  • .NET VM 是编译器还是解释器?

    NET 的虚拟机是编译 CIL 字节码 然后在最低级别 CPU 汇编程序 执行代码 还是解释器 读取以下指令并执行它们 NET 的虚拟机吗 编译 CIL 字节码 然后 在最低级别执行代码 CPU 汇编器 是的 它是 CLR 的一个组件 称为
  • 如何计算两个字符串向量之间的余弦相似度

    我有 2 个维度为 6 的向量 我想要一个介于 0 和 1 之间的数字 a c HDa 2Pb 2 BxU BuQ Bve b c HCK 2Pb 2 09 F G 谁能解释我应该做什么 使用lsa包和该包的手册 create some f
  • 从我的应用程序阻止/取消阻止应用程序:Android

    我想从我的应用程序阻止 取消阻止 用户无法使用 访问被阻止的应用程序 Android 设备中的某些应用程序 但我找不到任何解决方案 想法 I read Android如何以编程方式隐藏启动器图标 https stackoverflow co
  • Codeigniter 分页不呈现分页链接

    你好我有以下代码 this gt load gt library pagination this gt data products this gt products model gt get products and category th
  • 声纳+MS SQL数据库

    我正在尝试使用 mssql 服务器数据库初始化声纳 但我不能 使用 Microsoft SQL Server Management Studio 我创建了用户名 sonar 和密码 sonar 的用户 并向同时创建的 sonar 数据库授予
  • Python twill:下载可通过 PHP 脚本访问的文件

    I use twill在受登录表单保护的网站上导航 from twill commands import go http www example com login index php fv login form identifiant l
  • Android 自定义视图忽略 XML 中的“android:enabled”?

    我正在设置android enabled false 在自定义视图上 但它似乎对isEnabled 财产 这是一个简单的测试用例 public class TestView extends View public TestView Cont
  • .NET(或 MFC)的高速图形控件?

    我需要编写一个数字示波器类型的应用程序 有很多很棒的静态绘图控件 但我需要一些可以绘制每秒处理 4000 个样本的 16 条轨迹的东西 有人知道 NET 的高速图形控件吗 我什至会选择 MFC 因为它可以封装到 NET 控件中 谢谢您的帮助
  • PHP 中的 MPTT(修改的先序树遍历)问题

    我的第一篇文章在这里 看来这是一个变得明智的地方 我目前正在进行一些测试 第一次尝试使用 MPTT 修改的预序树遍历 方法在 PHP 的帮助下将数据存储在 Mysql 数据库中 但是 我试图找到最注重性能的方法来获取特定级别上的所有列表元素