数据库
首页 > 数据库> > 需要有关分层Mysql查询的帮助

需要有关分层Mysql查询的帮助

作者:互联网

我正在试图查询一个具有分层类别数据(用于cms)的表,这也与我的post数据和我的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名称描述

post2cat

解决方法:

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

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

标签:mysql,hierarchical-data
来源: https://codeday.me/bug/20191003/1848059.html