gpt4 book ai didi

php - 优化MYSQL+PHP父子输出

转载 作者:行者123 更新时间:2023-11-30 00:46:39 26 4
gpt4 key购买 nike

我只是想找到一种方法,使服务器资源有效地排序和显示按字母顺序排序的父/子结构。我不是专业程序员,所以我下面的代码很蹩脚,但它有效,也许你可以帮助我优化它。

表格是

id、parentid、名称。

parentid 为 0 表示 parent ,=id 表示子女。

任务是显示按字母顺序排序的 parent 及其 parent 下的所有 child ,也按字母顺序排序。所有项目都应该有名称及其相应的 ID。结构是这样的:

AAA
BBB
-> eee of BBB
-> ooo of BBB
-> zzz of BBB
CCC
DDD
-> mmm of DDD
-> nnn of DDD
EEE
FFF
...

这是我的愚蠢代码,但是它有效。 MySQL 按字母顺序对所有项目进行排序,而 PHP 只是循环遍历已排序的名称,为每个父项选择并显示子项。我不喜欢为每个父项运行的额外循环,也许有人可以建议在性能方面更好的方法

$sqlquer="SELECT id, parentid, name FROM mytable ORDER BY name";
$ath = mysql_query($sqlquer);

while ($row = mysql_fetch_array($ath)) {
if ($row[parentid]==0) $parents[]=$row;
else $children[]=$row;
}

foreach($parents as $par)
{
echo("$par[name]($par[id])<br>");
foreach($children as $ch)
{ if ($ch[parentid]==$par[id])
echo("->$ch[name]($ch[id])<br>");
}
}

最佳答案

select 
if ( b.parentid is null, a.name, concat( '->', a.name, ' of ', b.name )
fieldname
from
table a
left
join table b
on
a.parentid = b.id
order by
if ( b.parentid is null, a.name, b.name ),
a.name

抱歉,没有格式和非正式的回复,但现在我来自移动设备。希望它有效,我没有测试就做到了,有任何问题可以联系我。使用此解决方案,您只需在一个查询中即可执行所需操作,并且应返回有序结果。

关于php - 优化MYSQL+PHP父子输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21310656/

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