数据库如下
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语句,查询出改节点的所有子节点,以及子节点的子节点

解决方案 »

  1.   

    无法通过一句标准的SQL语句来实现这个要求。只能通过存储过程,或者在你的程序中实现。
    可以参考一下这个贴子。MySQL中进行树状所有子节点的查询 
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
      

  2.   

    MYSQL没有象SQLSERVER、ASA、ORACLE的递归查询SQL,只能用SP
      

  3.   

    我的数据库版本好像不支持
    报错:
    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)
      

  4.   

    你的MYSQL版本是多少?你可以先 set global log_bin_trust_function_creators=ON; 一下。
      

  5.   

    我设置了set global log_bin_trust_function_creators=ON,可以创建函数了,
    但是运行的是FIND_IN_SET这个函数找不到