MySQL所有父子关系

2024-01-19

我有一个名为table。它有一个名为id与类型INT(11)代表行的标识符,它还有其他字段,但我认为它们与这个问题无关。

我有另一个表名为table_children。它有一个名为parent与类型INT(11)指的是table.id作为外键。它还有另一个名为child与类型INT(11)这也指的是table.id作为外键。该表描述了table row to table行父子关系。

这是一个可能的设置。

table   table_children
id      parent child
0       0      1
1       1      2
2       1      3
3       3      4
4

我怎样才能得到id的所有后代0最少的请求数量?这里的答案是1, 2, 3, 4.

感谢您的帮助。


使用 MySQL,最简单的方法是存储all树中的路径,创建一个传递闭包 http://en.wikipedia.org/wiki/Transitive_closure.

table_children
parent child
0      0
1      1
2      2
3      3
4      4
0      1
0      2
0      3
0      4
1      2
1      3
1      4
3      4

现在你可以这样查询:

SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;

也可以看看:

  • 将平面表解析为树的最有效/优雅的方法是什么? https://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree/192462#192462
  • 使用 SQL 和 PHP 的分层数据模型 http://www.slideshare.net/billkarwin/models-for-hierarchical-data
  • SQL 反模式第 1 卷:避免数据库编程的陷阱 https://pragprog.com/titles/bksap1/sql-antipatterns-volume-1/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL所有父子关系 的相关文章

  • 从 datagridview 选定的行更新 mysql 数据库

    我有一个 datagridview 它在表单加载事件上加载 mysql 数据库表 t pi clients 并且我有另一个选项卡 其中包含 t pi client 相应列的文本框 它能够从 fullrowselect 模式获取数据到这些文本
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • mysqli_stmt_bind_result 的奇怪问题

    好吧 这让我很烦恼 我似乎在 PHP 文档中找不到任何内容 在 Google resultosphere 中也找不到任何内容 所以也许有人可以在这里提供帮助 我正在使用准备好的语句 绑定结果 然后使用这些绑定结果来填充下拉列表 例子
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • mysql jdbc 与 SSL 连接在 tls 握手级别失败

    我们的 mysql 服务器配置为仅接受与 ssl 密码 DHE RSA AES256 GCM SHA384 的连接 我正在使用 java mysql connector java 8 0 15 和 java 8 openjdk 版本 1 8
  • MySQL - 从表中删除空值行

    我有一张桌子 user 有超过 60 列 其中一列的名称是 用户名 我想删除其中的行username字段为空或NULL 我怎样才能做到这一点 谢谢你 Try this DELETE FROM user WHERE username IS N
  • 更新\插入数据从grafana到mysql

    可以从grafana更新数据或插入数据到mysql 我需要使用 UI 在 mysql 中插入 更新信息 现在我已经在使用grafana 所以想知道是否有任何方法可以使用grafana来更新或插入信息 没有用于获取用户输入并将该数据插入 My
  • PHP实现的机票预订系统

    如何防止预订系统中的座位被重复预订 我正在用 PHP 和 MYSQL 制作一个航空旅行预订系统模型作为一个项目 我有一个小问题 仅在付款后 门票和座位详细信息才会永久存储在此处 座位号在付款前分配 假设人 1 预订了飞机上的座位 x 并支付
  • PHP MySQL 查询带有 %s 和 %d

    SELECT COUNT AS test FROM s WHERE id d AND tmp mail lt gt 什么是 s and d for 这些是使用的格式符号 例如经过sprintf 例子 Output SELECT COUNT
  • Mac OS X Yosemite/El Capitan 上自动启动 MySQL 服务器

    我想在启动时自动启动 MySQL 服务器 这在小牛队是可能的 但在优胜美地似乎不起作用 edit 似乎这也适用于 El Capitan dcc 非常接近 这是 MySQL 在 Yosemite 上再次自动启动的方式 The com mysq
  • 为什么将 MySQL 凭据放在 www 目录之外? [复制]

    这个问题在这里已经有答案了 可能的重复 将核心类放在 Web 根目录之上 好还是坏主意 https stackoverflow com questions 3648739 putting core classes above the web
  • 将错误保存到 MySQL 数据库

    我有一个 php 查询来更新 MySQL 数据库 请参见下文 sql update hr payroll set payroll number payroll number tax code tax bacs ref bacs ref pa
  • 每个搜索词显示一行,如果未找到则替换默认值

    Query SELECT product id name FROM product WHERE barcode in 681027 8901030349379 679046 679047 679082 679228 679230 67923
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • MySQL #1093 - 您无法在 FROM 子句中指定用于更新的目标表“赠品”

    I tried UPDATE giveaways SET winner 1 WHERE ID SELECT MAX ID FROM giveaways 但它给出了 1093 您无法指定目标表 赠品 进行更新FROM clause 本文 ht
  • 在 MySQL 中插入时检查并防止相似字符串

    简要信息 我有3张桌子 Set id name SetItem set id item id position TempSet id 我有一个函数可以生成新的随机组合Item桌子 基本上 总是在成功生成之后 我在中创建一个新行Set表 获取
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • 退出 PHP 脚本后终止或停止 MySQL 查询

    我在工作中运行一个统计服务器 由于运行的查询量很大 该服务器有时会变得非常慢 我们的营销团队使用它作为主要统计工具 团队中的某些人有时会在脚本结束之前退出脚本 通过关闭浏览器或选项卡 同时 SQL 查询继续执行 当有人关闭或离开 PHP 脚
  • mysql 数据库正在复制,但在主服务器上创建的用户未在从服务器上复制

    在主从复制中 我们使用 mysql DB 在从服务器上复制少量数据库 我在主服务器上创建了一个用户 不幸的是它没有在从服务器上复制 Replicate Do DB app1 app2 mysql 用户创建命令 GRANT SELECT on
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci

随机推荐

  • 页面加载时使用 AJAX 不是一件坏事吗?

    我在上面看到过这个书呆子晚餐 http nerddinner codeplex com和其他网站 页面加载时 在 JavaScript 中 通过浏览器 将发出 AJAX 请求 从呈现初始页面的同一服务器获取一些数据 数据会很小 并且不存在会
  • AnyDac 又名 FireDac 无法生成更新查询

    我已经使用 UniDac 很长时间了 决定转向 FireDac 因为它具有良好的异步方法 在继续使用后 我发现我的数据编辑不再起作用 它给了我一个错误 FireDAC 物理 330 无法生成更新查询 更新表未定义 我在这里想做的是我有一个
  • Spring单例和Java单例(设计模式)有什么区别? [复制]

    这个问题在这里已经有答案了 我正在学习 Spring 框架 目前正在阅读一本关于它的书 这本书里说Spring单例与Java单例不同 这意味着什么以及有什么区别 谢谢 Java 单例的作用域是 Java 类加载器 Spring 单例的作用域
  • 严重:泄漏:在垃圾收集之前未调用 ByteBuf.release()。内蒂

    我已经创建了一些游戏服务器 并且刚刚与大约 10 个伙伴进行了测试 一切都很顺利 我们玩了大约 10 分钟 在游戏的某个时刻 游戏服务器停止为客户端提供服务 断开了每个人的连接 而且我连接到运行游戏的 VPS 的 SSH 也断开了连接 我不
  • Excel VBA 函数检查文件名是否包含该值

    我需要一个可以输出如下内容的公式 如果特定文件夹中的文件名包含 因为文件名在 字符后会有一个附加字符串 因此如果文件名包含单元格值 AB1 则在单元格 AC1 中添加完整文件名 用VBA可以实现吗 非常感谢 这在VBA中可行吗 当然 这是我
  • 如何反序列化 ArrayObject

    Note 我尝试过使用反序列化函数 但它说第一个参数应该是字符串而不是对象 所以我的问题 Q 如何在 php 中反序列化 ArrayObject 我的 ArrayObject 包含 O 11 ArrayObject 2 s 14 shopp
  • 将 WebKit 用于桌面应用程序 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • UIImage:调整大小,然后裁剪

    几天来 我一直在努力解决这个问题 尽管我一直觉得自己正处于启示的边缘 但我根本无法实现我的目标 在设计的概念阶段之前 我认为从 iPhone 的相机或库中抓取图像 使用相当于宽高比填充UIImageView 的选项 完全在代码中 然后cro
  • 是什么导致我的 WP7 应用程序崩溃?

    我在模拟器和手机本身上都发生过一些无法解释的崩溃 基本上 当我的应用程序崩溃时 我不会看到任何对话框 并且手机会返回主屏幕 我有以下代码来显示消息框 但这在某种程度上被绕过了 Code to execute if a navigation
  • 明星算法:距离启发式

    我正在使用 A 星算法 如此处所示 取自http code activestate com recipes 578919 python a pathfinding with binary heap http code activestate
  • 将等高线与等高线填充图对齐不规则网格极坐标图(半圆)

    我看到有几个人回答了使用不规则网格绘图的问题 我无法使轮廓线与填充轮廓对齐 此外 需要在绘图上显示数据点位置 以及以 30 度增量显示的径向辐条 以及在 10 20 30 处显示的半圆 Ref 在不规则网格上绘制等高线 https stac
  • 有没有一种快速方法可以在音频文件中查找(不一定识别)人类语音?

    我想编写一个程序 自动同步未同步的字幕 我想到的解决方案之一是以某种方式通过算法找到人类语音并根据其调整字幕 我发现的 API Google Speech API Yandex SpeechKit 与服务器一起工作 这对我来说不太方便 并且
  • SwiftUI 模态演示仅在 navigationBarItems 中工作一次

    当您从导航栏项目内的按钮显示模式时 SwiftUI 中存在一个错误 在下面的代码中 按钮 1 按预期工作 但按钮 2 只工作一次 struct DetailView View Binding var isPresented Bool Env
  • 为什么不能使用具有多态返回类型的原始类型?

    考虑以下两个类 public interface Foo
  • 将 Java BigInteger 用于巨大位掩码的性能影响

    我们面临着一个有趣的挑战 我们必须控制对驻留在 容器 中的数据的访问 可能会有数十万个 垃圾箱 对每个垃圾箱的访问是单独控制的 但限制可能而且可能会重叠 我们正在考虑为每个 bin 分配位掩码中的一个位置 1 2 3 4 等 然后 当用户登
  • 使用参数 [null, 2, 3] 执行“INSERT INTO events (user_id, ET1, ET2) VALUES (?, ?, ?)”时发生异常:

    我正在尝试从默认控制器内部创建表单 我希望主页中两个下拉列表中的值都存储在事件表的 ET1 和 ET2 列中 我能够做到这一点 但是我希望登录用户的 user id 也应该存储在事件表的 user id 列中 当尝试这样做时 它给了我错误
  • 方法 Illuminate\Database\Eloquent\Collection::links 不存在

    我创建了用户和消息之间的模型关系 我想为经过身份验证的用户实现消息列表 但出现以下错误 方法 Illuminate Database Eloquent Collection links 不存在 控制器 public function ind
  • 当我使用快捷键时获取我的ContextMenuStrip的SourceControl

    我有单身ContextMenuStrip连接到两个控件 DataGridView In the ToolStripMenuItem单击事件 我设法得到原始调用者 DataGridView 用这个代码 var menu ToolStripDr
  • 查找 Excel 电子表格的模板路径

    我有一个带有 VBA 代码的 Excel 电子表格模板 xltm 文件 我想在模板打开的电子表格中找到模板的路径 问题示例 用户通过双击 C My Stuff 中的模板文件打开一个新电子表格 他们填写单元格 然后在询问他们的名称后单击一个按
  • MySQL所有父子关系

    我有一个名为table 它有一个名为id与类型INT 11 代表行的标识符 它还有其他字段 但我认为它们与这个问题无关 我有另一个表名为table children 它有一个名为parent与类型INT 11 指的是table id作为外键