MySQL查询页面祖先

标签 mysql

我有一个包含这些字段(idparentIDnamecontent)的 MySQL 页面表.

页面层次结构是:

 - About Us 
   - History 
     - 2000
     - 2001

如果我在“2001”页面上,我如何创建一个查询来查找此页面的顶级祖先是“关于我们”?

最佳答案

一旦您重新设计表格以遵循 Nested Sets模型,查询将是

SELECT parent.name
FROM pages AS node,
pages  AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = '2001'
ORDER BY parent.lft
LIMIT 1

这会给你“关于我们”

如果您只允许特定级别的嵌套,您可以像该页面上显示的示例那样做一堆左连接:

SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.category_id
LEFT JOIN category AS t3 ON t3.parent = t2.category_id
LEFT JOIN category AS t4 ON t4.parent = t3.category_id
WHERE t4.name = 'FLASH';

但是如果你想支持任意深度的嵌套,嵌套集是唯一的选择。花时间通读整页。它可能比您希望的更复杂,但一旦您了解它的工作原理,它就会非常强大。

关于MySQL查询页面祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419374/

相关文章:

mysql - 错误1005(HY000): Can't create table 'tracker_phonetracker.location_share' (errno: -1)

mysql - 选择 unique (extract(year from saledate) || extract(month from saledate)) as ym from trnsact order by ym;

mysql - 从复杂的 SQL 查询更新用户表,users.id 无法识别?

MySQL UNION 或创建中间表?

mysql - 多字段报告,在 MySql 中自定义计数

mysql - 在 phpmyadmin 中仅将几个值设置为要枚举的域

popen 和 mysql 的 python 问题

php - 获取表格内列中显示的数据总数

mysql - 多次将A表连接到B表

php - 使用包含在另一个 PHP 文件中的变量