Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

[Sql Server2008]Ê÷½á¹¹µÄµÝ¹éËã·¨

±¾ÎÄÖ÷Òª½²ÊöÈý¸öÄÚÈÝ£º
1.ÈçºÎ´´½¨hierarychyidµÄ±í£¬²åÈëÊý¾Ý¼°»ù±¾µÝ¹é²éѯ¡£
2.½éÉÜhierarchyidµÄ10ÖÖרÓк¯Êý¡£
3.½éÉÜhierarchyidÌØÓеÄÉî¶ÈÓÅÏÈË÷Òý(Depth-First Indexing)ºÍ¹ã¶ÈÓÅÏÈË÷Òý(Breadth-First Indexing)
ÔÚÉÏÒ»½ÚÖÐ
http://blog.csdn.net/tjvictor/archive/2009/07/30/4395677.aspx
ÎÒÃÇÒѾ­ÑÝʾÁËÈçºÎÔÚSQL ServerÖÐͨ¹ýÖ÷¼üºÍÍâ¼üÀ´´æ´¢ÈçÏÂͼËùʾµÄÊ÷ÐͽṹÊý¾Ý
 
ËäȻͨ¹ýÖ÷¼üºÍÍâ¼üµÄÏ໥´îÅä¿ÉÒÔÂú×ãÎÒÃǵIJéѯ¡¢´æ´¢ÐèÇ󣬵«ÊÇÕâÖÖ·½Ê½²¢²»Ò×ÓÚ¹ÜÀíºÍά»¤£¬ÐÒÔ˵ÄÊÇ£¬ÔÚSQL Server 2008ÖÐÌṩÁËÒ»ÖÖеÄÊý¾ÝÀàÐÍhierarchyidºÍÏà¹ØµÄ²Ù×÷·½·¨À´´æ´¢ºÍ²éѯÕâÖÖÊ÷ÐͲã´Î¹ØÏµÊý¾Ý¡£
Ê×ÏÈ´´½¨Êý¾Ý±í:
create database TestDb
go
use TestDb
go
Create table EmployeeTreeTable
(
NodeId        hierarchyid PRIMARY KEY,
NodeLevel     AS NodeId.GetLevel(),
EmployeeId    int UNIQUE NOT NULL,
EmployeeName  nvarchar(32) NOT NULL,
)
NodeIdÊǼǼÊ÷ÐͲã´ÎµÄId£¬ÊÇhierarchyidÀàÐÍ¡£NodeLevelÊǸö¼ÆËãÁУ¬ÓÃÓÚ´æ´¢µ±Ç°Ê÷ÊÇÉî¶ÈÖµ£¬¸ù½ÚµãΪ0¡£¹ØÓÚNodeId.GetLevel()·½·¨½«ÔÚÏÂÃæÕ½ÚÖÐÏêϸ½éÉÜ¡£
°´ÕÕÉÏͼËùʾµÄ²ã´Î¹ØÏµÎª±í²åÈëÊý¾Ý£º
--²åÈëÊý¾Ý
declare @DepthNode hierarchyid;--Éî¶ÈId
declare @BreadthNode hierarchyid;--¹ã¶ÈId
--²åÈë¸ù½Úµã
insert into EmployeeTreeTable values(hierarchyid::GetRoot(),1,'ÏîÄ¿¾­Àí')
--¼ÆËãÉî¶È²¢²åÈë×Ó½Úµã2
select @DepthNode = NodeId from EmployeeTreeTable where [EmployeeId] = 1;
insert into EmployeeTreeTable values(@DepthNode.GetDescendant(null,null),2,'¼¼Êõ¾­Àí');
--¼ÆËã½Úµã2¹ã¶È£¬ÔÚ½Úµã2Óұ߲åÈë½Úµã3
select @BreadthNode = NodeId from EmployeeTreeTable where [EmployeeId] = 2;
insert into EmployeeTreeTable values(@DepthNode.GetDescendant(@BreadthNode,null),3,'²úÆ·¾­Àí');
--¼ÆËã½Úµã3¹ã¶È£¬ÔÚ½Úµã3Óұ߲åÈë½Úµã4
select @BreadthNode = NodeId from EmployeeTreeTable where [EmployeeId] = 3;
insert into EmployeeTreeTable values(@DepthNode.GetDescendant(@BreadthNode,null),4,'²âÊÔ¾­Àí');
--¼ÆËã½Úµã2Éî¶È²¢²åÈë×Ó½Úµã5
select @DepthNode = NodeId from EmployeeTreeTa


Ïà¹ØÎĵµ£º

SQL²Ù×÷È«¼¯

        ×î½üÕýÔÚѧϰÓÃSQL×öһЩ¶«Î÷£¬ÔÚÒ»¸öÌû×ÓÉÏÃæ¿´µ½ÕâÆª¶ÔºÜÓаïÖú£¬¾Í×ªÔØµ½ÁË×Ô¼ºµÄBlogÀϣÍû¶Ô´ó¼ÒÒ²ÓаïÖú¡£
SQL²Ù×÷È«¼¯
ÏÂÁÐÓï¾ä²¿·ÖÊÇMssqlÓï¾ä£¬²»¿ÉÒÔÔÚaccessÖÐʹÓá£
SQL·ÖÀࣺ
DDL—Êý¾Ý¶¨ÒåÓïÑÔ(CREATE£¬ALTER£¬DROP£¬DECLARE)
DML—Êý¾Ý²Ù× ......

C# »ñÈ¡ SQL·þÎñÆ÷Áбí

#region   µÃµ½ËùÓб¾µØÍøÂçÖпÉʹÓõÄSQL·þÎñÆ÷ÁÐ±í  
  ///   <summary>  
  ///   µÃµ½ËùÓб¾µØÍøÂçÖпÉʹÓõÄSQL·þÎñÆ÷ÁÐ±í  
  ///   </summary>  
  ///   <param   name="p_strServerList">·þÎñÆ÷Áбí</param& ......

SQL ×¢Èë¹¥»÷Ô­Àí¼°·À»¤

SQL ×¢Èë¹¥»÷Ô­Àí¼°·À»¤
ÔÚÈ·ÈÏ¿ÉÒÔ×¢ÈëµÄÇé¿öÏ£¬Ê¹ÓÃÏÂÃæµÄÓï¾ä£º
HTTP://www.163.com/news.asp?id=xx ;and (select count(*) from sysobjects)£¾0
HTTP://www.163.com/news.asp?id=xx ;and (select count(*) from msysobjects)£¾0
Èç¹ûÊý¾Ý¿âÊÇSQLServer£¬ÄÇôµÚÒ»¸öÍøÖ·µÄÒ³ÃæÓëÔ­Ò³ÃæHTTP://www.163.com/news.asp? ......

SQLµ÷ÓÅ

SQL Server ²éѯ
²éѯµÄʱºòÓ¦¸Ã¾¡Á¿°´ÕÕ¸´ºÏË÷ÒýÖеÄ˳ÐòÀ´×öÌõ¼þ²éѯ£»£¨±ÈÈçIXCÖÐspInterActiveInstance_GetByIDToStatÌõ¼þand ProcessState<>99µÄλÖã©£»
Èç¹ûÔÚ³ÌÐòÖÐÓÐFor»òÕßÊÇForeach£¬ÔÚ´æ´¢¹ý³ÌÖÐÓÖÓÐIF Exists£¬ÄǾÍÒª¿´ÊÇ·ñ¿ÉÒÔÔÚ±íÖмÓÈ븴ºÏË÷ÒýÁË£¬IF Not Exists¿ÉÒÔת»»ÎªIF ExistsÀ´Ê¹ÓÃË÷Òý£» ......

¡¾Õª¡¿´æ´¢¹ý³Ì±È½Ï¶¯Ì¬SQLµÄÓŵãÔÚÄÄÀï

´æ´¢¹ý³Ì¸ú¶¯Ì¬sqlÏà±ÈÓÐÈçÏÂÓŵ㣺
1¡¢ ´æ´¢¹ý³ÌÔÊÐí±ê×¼×é¼þʽ±à³Ì
´æ´¢¹ý³ÌÔÚ±»´´½¨ÒÔºó¿ÉÒÔÔÚ³ÌÐòÖб»¶à´Îµ÷Óöø²»±ØÖØÐ±àд¸Ã´æ´¢¹ý³ÌµÄSQL
Óï¾ä¶øÇÒÊý¾Ý¿âרҵÈËÔ±¿ÉËæÊ±¶Ô´æ´¢¹ý³Ì½øÐÐÐ޸ĵ«¶ÔÓ¦ÓóÌÐòÔ´´úÂëºÁÎÞÓ°ÏìÒò
ΪӦÓóÌÐòÔ´´úÂëÖ»°üº¬´æ´¢¹ý³ÌµÄµ÷ÓÃÓï¾ä´Ó¶ø¼«´óµØÌá¸ßÁ˳ÌÐòµÄ¿ÉÒÆÖ²ÐÔ
2 ¡¢´æ´¢¹ý³Ì ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ