gpt4 book ai didi

php - 如何从三个表中创建嵌套列表?

转载 作者:行者123 更新时间:2023-11-30 01:09:26 25 4
gpt4 key购买 nike

我有如下三个表:

[Category]->[SubCategory]->[Leaf]

-> means one-to-many relation;

是否可以仅使用一个查询来创建嵌套列表?

实际查询:

Select * from Category
join SubCategory
join Leaf

预期输出:

Category
--Subcategory
----Leaf
----Leaf
--Subcategory
----Leaf
----Leaf

我了解复合设计模式;但可以说我有查询的结果集,并且我想以最少的尝试来操作上面的列表。

更新

我的问题是没有 for 循环和子查询,可以用上面的一个查询来完成吗?或者从三个表生成上面这样的 3 个嵌套列表的最佳方法是什么?

更新:

从任何数据库和任何语言的三个表创建如上所述的嵌套列表的最优化方法是什么?

最佳答案

使用此查询:

SELECT * 
FROM Category c
JOIN SubCategory s ON s.CategoryID = c.ID
JOIN Leaf l ON l.SubCategoryID = s.ID
ORDER BY c.ID, s.ID, l.ID

然后在 PHP 循环中,每当类别名称发生变化时就打印它,每当它发生变化时就打印子类别名称,并打印每个叶名称。

$last_cat = null;
while ($row = fetch()) {
if ($row['CategoryName'] !== $last_cat) {
echo $row['CategoryName'] . "\n";
$last_cat = $row['CategoryName'];
$last_subcat = null;
}
if ($row['SubCategoryName'] != $last_subcat) {
echo "--{$row['SubCategoryName']}\n";
$last_subcat = $row['SubCategoryName'];
}
echo "----{$row['LeafName']\n";
}

关于php - 如何从三个表中创建嵌套列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19556492/

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