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

´«ÖDz¥¿Í£­Tree in SQL£¨ÒëÎÄ£©£¨3£©

This has some predictable results that we can use for building queries. The root is always of the form (left = 1, right = 2 * (SELECT COUNT(*) from TreeTable)); leaf nodes always have (left + 1 = right); the BETWEEN predicate defines the subtrees; and so on. Here are some common queries that you can use to build others:
ÎÒÃÇ¿ÉÒÔÀûÓÃһЩ¿ÉÔ¤¼ûµÄ½á¹û¹¹½¨²éѯ£¨±í´ïʽ£©¡£¸ù²¿×ÜÊÇÒÔÕâÖÖÐÎʽ¹¹³É£¨left = 1, right = 2 * (SELECT COUNT(*) from TreeTable)£©£»Ò¶×Ó½ÚµãÔò×ÜÊÇ£¨left + 1 = right£©£»BETWEEN±í´ï¶¨ÒåÁË×ÓÊ÷£»µÈµÈ¡£ÕâÀïÓÐһЩ³£ÓõIJéѯ£¬Äã¿ÉÒÔÓÃËüÃÇÀ´×齨¸ü¶àÆäËû£¨²éѯ£©£º
1. Find an employee and all his/her supervisors, no matter how deep the tree.
²éÕÒÒ»¸ö¹ÍÔ±¼°Ëû/ËýµÄËùÓÐÉϼ¶£¬ÎÞÂÛÕâ¿ÅÊ÷½á¹¹ÓжàÉî¡£
SELECT P2.*
from Personnel AS P1, Personnel AS P2
WHERE P1.lft BETWEEN P2.lft AND P2.rgt
AND P1.emp = :myemployee;
2. Find the employee and all his/her subordinates. (This query has a nice symmetry with the first query.)
²éÕÒ¹ÍÔ±¼°Ëû/ËýËùÓÐÏÂÊô¡££¨Õâ¸ö²éѯÓëµÚÒ»¸ö²éѯÐγÉÁ¼ºÃµÄ¶Ô³Æ¡££©
SELECT P2.*
from Personnel AS P1, Personnel AS P2
WHERE P1.lft BETWEEN P2.lft AND P2.rgt
AND P2.emp = :myemployee;
3. Add a GROUP BY and aggregate functions to these basic queries and you have hierarchical reports. For example, the total salaries that each employee controls:
¸øÕâЩ»ù±¾²éѯÌí¼ÓGROUP BY£¨¹Ø¼ü×Ö£©ºÍ×ܼƺ¯ÊýÕâÑùÄã¾ÍÓзּ¶¼Ç¼ÁË¡£ÀýÈ磬ÿ¸ö¹ÍÔ±ÄÜÖ§ÅäµÄн³ê×ÜÊý£º
SELECT P2.emp, SUM(S1.salary)
from Personnel AS P1, Personnel AS P2,
Salaries AS S1
WHERE P1.lft BETWEEN P2.lft AND P2.rgt
AND P1.emp = S1.emp
GROUP BY P2.emp;
In the adjacency list method, this has to be done with a cursor.
ÔÚÁÚ½ÓÁбíģʽÀ±ØÐëÒÀ¿¿Óα꣨cursor£©²ÅÄÜÕâÑù×ö¡£
4. Find the level of each node, so you can print the tree as an indented listing.
²éÕÒÿ¸ö½ÚµãµÄ¼¶±ð£¬ÕâÑùÄã¾ÍÄܹ»ÒÔËõ½øÁбíÐÎʽ´òÓ¡Õâ¿ÃÊ÷ÁË¡£
SELECT COUNT(P2.emp) AS indentation, P1.emp
from Personnel AS P1, Personnel AS P2
WHERE P1.lft BETWEEN P2.lft AND P2.rgt
GROUP BY P1.emp
ORDER BY P1.lft;
5. The nested set mod


Ïà¹ØÎĵµ£º

SQL Express×Ô¶¯±¸·Ý

--µÚÒ»²½
--ÔÚmaster¿âÖн¨Á¢Ò»¸ö±¸·ÝÊý¾Ý¿âµÄ´æ´¢¹ý³Ì.
USE master
GO
CREATE PROC p
      @db_name sysname,         --Êý¾Ý¿âÃû
      @bk_path NVARCHAR(1024)     --±¸·ÝÎļþµÄ·¾¶
 A ......

PL/SQL¼¯½õ

--ÉèÖÃÊý¾Ý¿âÊä³ö£¬Ä¬ÈÏΪ¹Ø±Õ£¬Ã¿´Îдò¿ª´°¿Ú¶¼ÒªÖØÐÂÉèÖÃ
set serveroutput on
--µ÷Óà    °ü           º¯Êý    ²ÎÊý
execute dbms_output.put_line('hello world');
--»òÕßÓÃcallµ÷Óã¬Ï൱ÓÚjavaÖеĵ÷ÊÔ³ÌÐò´ò×®
call d ......

SQLÓï¾ä»ã×Ü

SQL :Structured Query Language½á¹¹»¯²éѯÓïÑÔ
1.Select [Predicate] *(filed) from table/view Where ... Group by ... Having... Order by ... With ...
   Predicate£º°üÀ¨all/Distinct/Distinctrow/Top£¬ÏÞÖÆ²éѯ½á¹û£»
   As¿ÉÒÔÃüÃû±ðÃû£»
   Where ... Ö¸¶¨Ä³Ð©Ìõ¼þ£¬½«ËùÓ ......

Áù¸ö½¨Òé·ÀÖ¹SQL×¢Èëʽ¹¥»÷

     SQL×¢Èë¹¥»÷µÄΣº¦ÐԺܴó¡£ÔÚ½²½âÆä·ÀÖ¹°ì·¨Ö®Ç°£¬Êý¾Ý¿â¹ÜÀíÔ±ÓбØÒªÏÈÁ˽âÒ»ÏÂÆä¹¥»÷µÄÔ­Àí¡£ÕâÓÐÀûÓÚ¹ÜÀíÔ±²ÉÈ¡ÓÐÕë¶ÔÐԵķÀÖδëÊ©¡£
¡¡  Ò»¡¢ SQL×¢Èë¹¥»÷µÄ¼òµ¥Ê¾Àý¡£
¡¡¡¡statement := "SELECT * from Users WHERE Value= " + a_variable + "
    ÉÏÃæÕâÌõÓï¾äÊÇºÜÆ ......

SQL SERVERµÇ¼Óû§ÔÚ·þÎñÆ÷ÉϵÄȨÏÞ

SQL SERVERµÇ¼Óû§ÔÚ·þÎñÆ÷ÉϵÄȨÏÞ
Ò»¸öµÇ¼Óû§µ½µ×ÔÚSQL SERVERʵÀýÉÏÓÐʲôÑùµÄȨÏÞ£¬ÏÂÃæÒÔSQL SERVER2005ΪÀýÀ´Ï¸Êýһϡ£
Ò»£®
Ê×ÏȲ鿴¸ÃµÇ¼Óû§ÊôÓÚÄĸö¹Ì¶¨·þÎñÆ÷½ÇÉ«¡£ËùÓÐSQL SERVERµÄµÇ¼Óû§ºÍ½ÇÉ«¶¼»áÔÚmaster.sys.server_principalÊÓͼÉÏÓÐÒ»Ìõ¼Ç¼¡£¶ø¼Ç¼µÇ¼Óû§ÊôÓÚʲô·þÎñÆ÷½ÇÉ«µÄÊÓͼÊÇmaster. ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ