mysql - 在分层 Mysql 查询方面需要帮助

标签 mysql hierarchical-data

我正试图全神贯注地查询一个表,该表具有分层类别数据(用于 cms),该数据也与我的帖子数据相关联,并且与我的 post2cat 表存在多对多类型的关系。具体来说,我的问题是如何获取属于特定类别 ID 的任何子类别(不限于直接后代,但可以是 n 级深)的所有帖子?这是我的表格:

“类别”表:

+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| name      | varchar(45) | YES  |     | NULL    |                |
| parent_id | int(11)     | YES  | MUL | 0       |                |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

'post2cat' 表:

+---------+---------+------+-----+---------+-------+
| Field   | Type    | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| post_id | int(11) | NO   | MUL | NULL    |       |
| cat_id  | int(11) | NO   | MUL | NULL    |       |
+---------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

'帖子'表:

+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int(11)      | NO   | PRI | NULL    | auto_increment |
| title         | varchar(256) | NO   |     | NULL    |                |
| content       | text         | NO   |     | NULL    |                |
| end_date      | datetime     | NO   |     | NULL    |                |
| format_id     | int(11)      | NO   |     | NULL    |                |
| featured      | int(1)       | NO   |     | NULL    |                |
| status        | int(3)       | NO   |     | NULL    |                |
| publish_date  | datetime     | NO   |     | NULL    |                |
| date_created  | datetime     | NO   |     | NULL    |                |
| date_modified | datetime     | NO   |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+

post_id 名称描述

后猫

最佳答案

在 MySQL 中仅使用 SQL 将树提取到任意深度 n 是一项挑战(参见:Managing Hierarchical Data in MySQLHierarchical Queries in MySQL)。

如果您处理的是小型数据集,那么从数据库中选择所有类别然后使用脚本语言构建树是最有意义的。然后可以遍历树以找到父节点和父节点的子节点,然后可以使用它们来使用连接查询数据库中的帖子。

关于mysql - 在分层 Mysql 查询方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5689635/

相关文章:

php - 如何从 mysql db php 中选择

MySQL - 拆分字符串

php - 表单提交后添加paypal支付确认到mysql

mysql - 如何将层次信息存储到数据库中?

php - 使用 Codeigniter 闭包表显示分层数据

mysql - 嵌套集 - 自下而上的方法

mysql - 在 MySQL/PHP 中实现嵌套顺序集

mysql - mongo 中的 mysql 日期函数等效吗?

c# - 在 C# 中管理键值对的最佳方法

php - 有两个表的邻接表模型