gpt4 book ai didi

sql - 如何从同一张表的父行中获取所有子项?

转载 作者:行者123 更新时间:2023-11-29 02:06:42 24 4
gpt4 key购买 nike

假设我有一个名为 my_table 的表,如下所示:

id      |  name                    | parent_id
1 | Row 1 | NULL
2 | Row 2 | NULL
3 | Row 3 | 1
4 | Row 4 | 1
5 | Row 5 | NULL
6 | Row 6 | NULL
7 | Row 7 | 8
8 | Row 8 | NULL
9 | Row 9 | 4
10 | Row 10 | 4

基本上我希望 PHP 中的最终数组看起来像这样:

Array
(
[0] => Array
(
[name] => Row 1
[children] => Array
(
[0] => Array
(
[name] => Row 3
[children] =>
)

[1] => Array
(
[name] => Row 4
[children] => Array
(
[0] => Array
(
[name] => Row 9
[children] =>
)

[1] => Array
(
[name] => Row 10
[children] =>
)

)

)

)

)

[1] => Array
(
[name] => Row 2
[children] =>
)

[2] => Array
(
[name] => Row 5
[children] =>
)

[3] => Array
(
[name] => Row 6
[children] =>
)

[4] => Array
(
[name] => Row 8
[children] => Array
(
[0] => Array
(
[name] => Row 7
[children] =>
)

)

)

)

所以,我希望它获取所有 parent_id 为空的行,然后递归地找到所有嵌套的子项。

现在这是我遇到问题的部分:

如何通过对数据库的 1 次调用来完成此操作?

我确信我可以用一个简单的 select 语句来完成它,然后让 PHP 使数组看起来像这样,但我希望这可以通过某种奇特的数据库连接或类似的东西来完成。

最佳答案

我不知道有什么方法可以从单个数据库调用中获取这样的数组。 mysql SQL 查询返回一个始终基于列的类似表的数据集。因此,答案是你不能

但是,可以进行非常智能的基于树的查询。可以找到关于此的非常有趣的读物 here .

在 mysql 以外的其他系统上,Common table expressions可以实现你想要的。

但仍然没有开箱即用的数组。

关于sql - 如何从同一张表的父行中获取所有子项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com