【发布时间】:2010-06-06 20:13:17
【问题描述】:
我正在开发一个菜单系统,该系统需要一个 url,然后查询数据库来构建菜单。
我的菜单表是:
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| node_id | int(11) | YES | | NULL | |
| parent | int(11) | YES | | NULL | |
| weight | int(11) | YES | | NULL | |
| title | varchar(250) | YES | | NULL | |
| alias | varchar(250) | YES | | NULL | |
| exclude | int(11) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
我的问题的相关列是别名、父级和 node_id。
所以对于像这样的网址:http://example.com/folder1/folder2/filename
别名可能 = “文件名”、“文件夹 1”、“文件夹 2”
Parent = 父文件夹的 node_id。
我所知道的是如何将 url 拆分为一个数组并检查别名是否与每个部分匹配。 我不知道如何让它按别名匹配“folder2”且父别名匹配“folder1”的父级过滤。 我想像这样的查询:
select * from menu
where alias='filename' and
where parent = node_id
where alias='folder2' and parent = node_id
where alias='folder1'
除非我知道以上是错误的。我希望这可以在一个查询中完成。
提前感谢您的帮助!
【问题讨论】:
-
示例数据和基于数据的预期输出会有所帮助。
标签: mysql