mysql树
2015-10-22 17:46
525 查看
http://blog.itpub.net/26230597/viewspace-1269668/
http://blog.csdn.net/mchdba/article/details/39277301
DROP FUNCTION IF EXISTS fn_tree_pathname;;
CREATE FUNCTION fn_tree_pathname(nid INT,delimit VARCHAR(10)) RETURNS VARCHAR(2000) CHARSET utf8
BEGIN
DECLARE pathid VARCHAR(1000);
SET @pathid='';
CALL pro_cre_pnlist(nid,delimit,@pathid);
RETURN @pathid;
END;
drop PROCEDURE pro_cre_pnlist;
CREATE PROCEDURE pro_cre_pnlist(IN nid INT,IN delimit VARCHAR(10),INOUT pathstr VARCHAR(1000))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE parentid INT DEFAULT 0;
DECLARE cur1 CURSOR FOR
SELECT t.parent_node_id,CONCAT(t.node_name,delimit,pathstr)
FROM tb_catalog_node AS t WHERE t.node_id = nid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SET max_sp_recursion_depth=12;
OPEN cur1;
FETCH cur1 INTO parentid,pathstr;
WHILE done=0 DO
CALL pro_cre_pnlist(parentid,delimit,pathstr);
FETCH cur1 INTO parentid,pathstr;
END WHILE;
CLOSE cur1;
END
select * from tb_catalog_node;
select fn_tree_pathname(t.NODE_ID,'/') pathname ,t3.OFR_NAME ,
t3.OFR_CODE
from tb_catalog_node t INNER JOIN tb_catalog_ofr_rel t2
on t2.NODE_ID=t.NODE_ID INNER JOIN tb_prd_ofr t3
on t3.OFR_ID=t2.OFR_ID
where t.NODE_ID=1000102;
http://blog.csdn.net/mchdba/article/details/39277301
DROP FUNCTION IF EXISTS fn_tree_pathname;;
CREATE FUNCTION fn_tree_pathname(nid INT,delimit VARCHAR(10)) RETURNS VARCHAR(2000) CHARSET utf8
BEGIN
DECLARE pathid VARCHAR(1000);
SET @pathid='';
CALL pro_cre_pnlist(nid,delimit,@pathid);
RETURN @pathid;
END;
drop PROCEDURE pro_cre_pnlist;
CREATE PROCEDURE pro_cre_pnlist(IN nid INT,IN delimit VARCHAR(10),INOUT pathstr VARCHAR(1000))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE parentid INT DEFAULT 0;
DECLARE cur1 CURSOR FOR
SELECT t.parent_node_id,CONCAT(t.node_name,delimit,pathstr)
FROM tb_catalog_node AS t WHERE t.node_id = nid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SET max_sp_recursion_depth=12;
OPEN cur1;
FETCH cur1 INTO parentid,pathstr;
WHILE done=0 DO
CALL pro_cre_pnlist(parentid,delimit,pathstr);
FETCH cur1 INTO parentid,pathstr;
END WHILE;
CLOSE cur1;
END
select * from tb_catalog_node;
select fn_tree_pathname(t.NODE_ID,'/') pathname ,t3.OFR_NAME ,
t3.OFR_CODE
from tb_catalog_node t INNER JOIN tb_catalog_ofr_rel t2
on t2.NODE_ID=t.NODE_ID INNER JOIN tb_prd_ofr t3
on t3.OFR_ID=t2.OFR_ID
where t.NODE_ID=1000102;
相关文章推荐
- ubuntu14.04 下 mysql 存储目录迁移
- 解决mysql slave同步问题
- mysql event 事件
- 【转】MySQL随机字符串生成
- Windows Server 2003 下配置 MySQL 群集(Cluster)
- MySQL RESET MASTER与RESET SLAVE
- MySQL使用中的一些方法与技巧
- 2套mysql主从互切脚本
- MySQL 表锁以及FLUSH TABLES操作
- mysql c
- MySQL中general log使用
- JDBC-连接mysql查询数据时中文为空解决办法
- MySQL中数据库重命名
- MySQL UPDATE语句中的一个诡异现象
- MySQL中一些查看事务和锁情况的常用语句
- [转]MYSQL 查询优化
- mysql left( right ) join使用on 与where 筛选的差异
- MySQL NOT EXISTS优化的一个案例
- MySQL和MySQLi的区别
- MySQL DECIMAL数据类型