易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 2000和2005 树形递归法小汇总 收藏

--测试数据
if OBJECT_ID('tb') is not null
drop table tb
go
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO
--2000的方法
--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
declare @Level int
set @level=1
insert @t_level select @id,@level
while @@rowcount>0
begin
    set @level=@level+1
    insert @t_Level select tb.id,@level
     from tb join @t_level t on tb.pid=t.id
     where t.level+1=@level
   end
   return
end
select tb.*
from tb join dbo.f_cid('002') b
on tb.ID=b.id
/*
ID   PID  Name
---- ---- ----------
002  001  烟台市
004  002  招远市
*/
go
--2005的方法(CTE)
declare @n varchar(10)
set @n='002'
;with
jidian as
(
select * from tb where ID=@n
  union all
 select t.* from jidian j join tb t on j.ID=t.PID
)
select * from jidian
go
/*
ID   PID  Name
---- ---- ----------
002  001  烟台市
004  002  招远市
*/
go
--查找指定节点的所有父节点(标准树形,即一个子节点只有一个父节点)
CREATE FUNCTION f_Pid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3))
AS
BEGIN
INSERT @t_Level SELECT @ID
SELECT @ID=PID from tb
WHERE ID=@ID
  AND PID IS NOT NULL
WHILE @@ROWCOUNT>0
BEGIN
  INSERT @t_Level SELECT @ID
  SELECT @ID=PID from tb
  WHERE ID=@ID
   AND PID IS NOT NULL
END
RETURN
END
select tb.*
from tb join dbo.f_Pid('004') b
on tb.ID=b.id
/*
ID   PID  Name
---- ---- ----------
001  NULL 山东省
002  001  烟台�


相关文档:

oracle sql*plus set &spool介绍(二)

Oracle spool 用法小结[半转半加]
关于SPOOL(SPOOL是SQLPLUS的命令,不是SQL语法里面的东西。)
对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如:
select empno||','||ename||','||sal from emp;
spool常用的设置
set colsep' ';    //域输出分隔符
set echo off;    //显示start启动� ......

N 层应用程序中的数据检索和 CUD 操作 (LINQ to SQL)

http://msdn.microsoft.com/zh-cn/library/bb546187.aspx
http://www.cnblogs.com/kirinboy/archive/2010/01/20/linq-to-sql-update-1.html
【引文】
在学习LINQ时,我几乎被一个困难所击倒,这就是你从标题中看到的更新数据库的操作。下面我就一步步带你走入这泥潭,请准备好砖头和口水,Follow me。
从最简单的情况入 ......

Sql操作大全

SQL操作全集
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类: 
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) 
DML—数据操纵语言(
SELECT,DELETE,UPDATE,INSERT) 
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明� ......

SQL 常用语句以及函数

SQL 常用语句以及函数之一 
SELECT --从数据库表中检索数据行和列
      INSERT --向数据库表添加新数据行
      DELETE --从数据库表中删除数据行
      UPDATE --更新数据库表中的数据
  --数据定义
   CREATE TABLE --创建一个数据库表
      DROP TABLE --从数据库中删除表
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号