求教自关联树型表查询

安德烈_T 2009-12-23 06:35:02
数据库如下
CREATE TABLE `menuTmpItem` (
`MENUTMPITEM` int(11) NOT NULL auto_increment COMMENT '菜单项模板id',
`MENUTMP` int(11) default NULL COMMENT '模板id',
`PARENTID` int(11) default NULL,
`MENUITEMLEVEL` tinyint(1) default '1' COMMENT '单菜等级',
`FPID` int(11) default NULL COMMENT '产品计费表id(收费平台)',
`ITEMNAME` varchar(30) default NULL COMMENT '菜单项名称',
`ALIAS` varchar(30) default NULL COMMENT '菜单项别名',
`ATTR` tinyint(1) default NULL COMMENT '菜单项属性,0为产品,1为目录',
`MODELID` tinyint(1) default NULL COMMENT '模式id,1为模式1,n为模式n,最大n为4',
`SORTNUM` tinyint(2) default NULL COMMENT '排序id',
`REMARK` varchar(500) default NULL COMMENT '备注',
`STATUSID` tinyint(1) default NULL COMMENT '状态:1有效0无效',
`OPERATORID` int(10) default NULL COMMENT '修改者id',
`OPERATOR` varchar(20) default NULL COMMENT '修改者',
`OPERATORTIME` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP COMMENT '修改时间',
`EX1` varchar(20) default NULL COMMENT '扩展字段1',
`EX2` varchar(20) default NULL COMMENT '扩展字段2',
`EX3` varchar(20) default NULL COMMENT '扩展字段3',
PRIMARY KEY (`MENUTMPITEM`),
KEY `PARENTID` (`PARENTID`),
KEY `MENUTMP` (`MENUTMP`),
CONSTRAINT `menuTmpItem_ibfk_4` FOREIGN KEY (`MENUTMP`) REFERENCES `menuTmp` (`MENUTMP`) ON DELETE CASCADE ON UPDATE NO ACTION
)

其中PARENTID自动关联到MENUTMPITEM,整个表形成一个自关联树形表。
表数据中有多棵树,
求教,如何根据树的根节点的MENUTMPITEM通过一条sql语句,查询出改节点的所有子节点,以及子节点的子节点
...全文
288 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
安德烈_T 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acmain_chm 的回复:]
你的MYSQL版本是多少?

你可以先 set global log_bin_trust_function_creators=ON; 一下。
[/Quote]
我设置了set global log_bin_trust_function_creators=ON,可以创建函数了,
但是运行的是FIND_IN_SET这个函数找不到
ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
你的MYSQL版本是多少?

你可以先 set global log_bin_trust_function_creators=ON; 一下。
安德烈_T 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
无法通过一句标准的SQL语句来实现这个要求。

只能通过存储过程,或者在你的程序中实现。
可以参考一下这个贴子。

MySQL中进行树状所有子节点的查询
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
[/Quote]
我的数据库版本好像不支持
报错:
ERROR 1418 : This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
wwwwb 2009-12-24
  • 打赏
  • 举报
回复
MYSQL没有象SQLSERVER、ASA、ORACLE的递归查询SQL,只能用SP
安德烈_T 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 acmain_chm 的回复:]
你的MYSQL版本是多少?
[/Quote]
5.0.67和5.0.15都不行
ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
你的MYSQL版本是多少?
ACMAIN_CHM 2009-12-23
  • 打赏
  • 举报
回复
无法通过一句标准的SQL语句来实现这个要求。

只能通过存储过程,或者在你的程序中实现。
可以参考一下这个贴子。

MySQL中进行树状所有子节点的查询
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧