Php MySql修改了预订单树以创建url
这个问题是基于我先前的问题。这一次,我尝试使用修改的预排序树方法为pages表中的所有行生成URL 以下是MySql表:[注意:我添加了'parent'列只是为了让查看者了解category表中的父子关系。实际修改的Preorder Tree方法不使用parent列(父子关系)] : 我正在尝试编写一个mysql查询,该查询将使用生成以下输出的category表为pages表中的所有行生成URL 预期行数: 下面是我在分类表上尝试的内容。下面的SQL查询检索类别表中标题“oops”的单个路径Php MySql修改了预订单树以创建url,php,mysql,database-design,content-management-system,seo,Php,Mysql,Database Design,Content Management System,Seo,这个问题是基于我先前的问题。这一次,我尝试使用修改的预排序树方法为pages表中的所有行生成URL 以下是MySql表:[注意:我添加了'parent'列只是为了让查看者了解category表中的父子关系。实际修改的Preorder Tree方法不使用parent列(父子关系)] : 我正在尝试编写一个mysql查询,该查询将使用生成以下输出的category表为pages表中的所有行生成URL 预期行数: 下面是我在分类表上尝试的内容。下面的SQL查询检索类别表中标题“oops”的单个路
SELECT concat('/',group_concat(parent.title separator '/')) as url
FROM category AS node, category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.title = 'oops'
ORDER BY parent.lft;
像这样的东西应该足够了
SELECT CONCAT_WS('/',x.path,y.page_name) full_path
FROM
( SELECT node.id, GROUP_CONCAT(parent.title ORDER BY parent.lft SEPARATOR '/') path
FROM category node
JOIN category parent
ON node.lft BETWEEN parent.lft AND parent.rgt
GROUP
BY node.title
ORDER
BY node.lft
) x
JOIN pages y
ON y.category_id = x.id;
您使用的聚合函数没有GROUPBY子句。这是基于文章中的一个示例吗?@是的,正确,我指的是显示如何检索单个路径的部分。有没有其他方法可以在不使用聚合函数的情况下编写查询来为pages表中的所有行生成URL?@这只是为了让查看者理解而添加的,我已经在上面的问题中为查看者添加了一个注释。按目录排序真棒!!!它很有魅力。您能建议我使用哪种方法来处理大量行(百万行)吗?或者这是你查询的结果这可能对其他人也有帮助优化不是我的事
SELECT CONCAT_WS('/',x.path,y.page_name) full_path
FROM
( SELECT node.id, GROUP_CONCAT(parent.title ORDER BY parent.lft SEPARATOR '/') path
FROM category node
JOIN category parent
ON node.lft BETWEEN parent.lft AND parent.rgt
GROUP
BY node.title
ORDER
BY node.lft
) x
JOIN pages y
ON y.category_id = x.id;