MySql 获取当前节点及递归所有上级节点

-- MySql 获取当前节点及递归所有上级节点
-- 参数说明:resultField:查询返回字段,idd 要查询的资源ID值,idFieldName ID字段名,parentIdFieldName 上级ID字段名,tableName 表名,isContainMySelf 是否包含自己
DROP procedure IF EXISTS pro_getParentList;
create procedure pro_getParentList(in resultField varchar(4000),in myid varchar(100),in idFieldName varchar(100),in parentIdFieldName varchar(100),in tableName varchar(100),isContainMySelf int)
begin
	drop table if exists tmpParent;
	CREATE    TABLE tmpParent(temId varchar(100)) ;
	set @tempParentId=myid;
  set @myDoflag=1;
WHILE @myDoflag>0  do
    set @ssss = CONCAT(‘ select ‘, parentIdFieldName, ‘, count(*) INTO  @tempParentId,@myDoflag from ‘,tableName ,‘ where ‘,idFieldName,‘=‘,‘‘‘‘,@tempParentId,‘‘‘‘);
		prepare strsql from @ssss;
		execute strsql;
    deallocate prepare strsql;
    if(@myDoflag>0) THEN
	  set @insertSql = CONCAT(‘INSERT into tmpParent(temId) values (‘,"‘",@tempParentId,"‘",‘)‘);
	  prepare preSql1 from @insertSql;
	  execute preSql1;
    deallocate prepare preSql1;
    end if;
end WHILE;

		 IF (isContainMySelf=1) THEN
			INSERT into tmpParent(temId) values (myid);
		 END IF; 

			SET @fieldSql=concat(‘ SELECT ‘,resultField);
			set @strsql = CONCAT(@fieldSql,‘ from ‘, tableName,‘ s ‘,‘ inner join  tmpParent t on t.temId=s.‘,idFieldName,‘  order by s.‘,idFieldName,‘  asc‘);
			prepare preSql from @strsql;
			execute preSql;

end

  

时间: 2024-10-18 02:30:31

MySql 获取当前节点及递归所有上级节点的相关文章

ztree中获取选中节点下的所有叶子节点

ztree中获取选中节点下的所有叶子节点 var setting = {     data: {         simpleData: {             enable: true        }     },     callback: {         onClick: treenodeClick     } }; //点击树节点,获取节点的所有叶子节点idfunction treenodeClick(event, treeId, treeNode, clickFlag) {

mysql 获取当前日期及格式化[转]

MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式 返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_format(now(),'%y-%m-%d'); 根据format字符串格式化date值: %S, %s 两位数字形式的秒( 00,01, ..., 59)%I, %i 两位数字形式的分( 00,

mysql 获取季度的第一天 本月的第一天,本周的第一天sql语句(转)

感谢:http://www.111cn.net/database/110/d45124323da8d2d87b80f78319987eda.htm 查看同主题的另一篇博客:http://blog.csdn.net/cleanfield/article/details/41447585 ------------------------------------------------------------------------------ 本季度的第一天 ,然后你可以把字符串再转换为日期. 方法

mysql获取group by的总记录行数方法

mysql获取group by内部可以获取到某字段的记录分组统计总数,而无法统计出分组的记录数. mysql的SQL_CALC_FOUND_ROWS 使用 获取查询的行数 在很多分页的程序中都这样写: 代码如下 复制代码 SELECT COUNT(*) from `table` WHERE ......; 查出符合条件的记录总数 代码如下 复制代码 SELECT * FROM `table` WHERE ...... limit M,N; 查询当页要显示的数据 这样的语句可以改成: 代码如下 复

MySQL获取Schema表名和字段信息

MySQL获取Schema表名和字段信息 获取表名 select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,TABLE_COMMENT,CREATE_TIME,UPDATE_TIME, CHECK_TIME from information_schema.TABLES where TABLE_SCHEMA='t_shop' ; 获取字段名 select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NUL

C# TreeView 树节点:递归显示整个系统盘符文件目录及文件

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Demo { /// <summary> /// 有关对于TreeView节点的填充的相关处理类 /// </summary> class TreeViewUtils { #region 有关将整个系统盘

mysql 获取当前日期及格式化

MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式 返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_format(now(),'%y-%m-%d'); 根据format字符串格式化date值: %S, %s 两位数字形式的秒( 00,01, ..., 59)%I, %i 两位数字形式的分( 00,

用递归删除各种节点

#include <stdio.h> #include <malloc.h> #include <stdlib.h> #define MAXSIZE 1000 typedef int ElemType; typedef struct node{ //定义链表节点类型 ElemType data; struct node * next; } Node; typedef Node *LinkedNode; /*[1] 求以h为头指针的单链表的节点个数 */ int GetN

关于递归删除链表节点为什么不会断链问题解释

问题的由来:    当你第一次实现用递归实现链表删除功能的时候,是否有一丝丝的考虑过.这个问题呢?为什么对于非递归版本的删除必须要知道当前要删除节点的前驱,而需要对其前驱节点的next域指针进行修改.而递归删除却不需要呢?难道这样不会造成链表的断链吗? 好了.我们开始抽象出我们今天要解决的问题. 问题一: 递归实现链表节点的删除和非递归删除的区别是什么? 问题二: 为什么在使用递归删除的时候链表不会断链? 先给个代码,好根据代码模拟,不会空想. 函数的递归模型: 终止条件: f(L,x) = 不