sql ¹ØÓÚtreeµÄÎÊÌâ
Ê÷½á¹¹ÈçÏ£º
id employee_id username age Salary higher_id
1 E001 a 32 20000 E001
2 E002 a1 30 12000 E001
3 E003 a2 30 12000 E001
4 E004 aa1 25 4000 E002
5 E005 aa2 25 4000 E002
6 E006 aa3 32 4000 E003
ÈçºÎµÃ³öijԱ¹¤ÏÂÃæËùÓм¶ÁªÔ±¹¤µÄ×ÜÊý ±ÈÈ磺Ա¹¤ a ÏÂÃæÓÐ 2¸ö £¨a1,a2£©È»ºó a1 ÏÂÃæÓÖÓÐ2¸ö(aa1,aa2) £¬a2 ÏÂÃæÓÐÒ»¸ö£¨aa3£©ÄÇ×ܺ;ÍÊÇ 2+(2+1)=5¸öÁË¡£»»¾ä»°Ëµ¡£ÕÒÊ÷è¾µÄÒ¶×Ó½Úµã×ÜÊý£¬
ÎÒÕâÓÐÒ»¸ö£¬ÇóÒ¶×ÓÉî¶ÈµÄ´úÂë¡£ ÈçÏ£º
create function Getunderlyinglevel(@emploryee_id as varchar(50))
--»ñȡijԱ¹¤Ëù´¦Ö°Î»²ã´ÎµÄÉî¶È
returns int
as
begin
RETURN
(
case when exists (select * from employee_info where employee_id=@emploryee_id and higher_id=@emploryee_id)
then
1
else
1 + (select MAX(dbo.GetUnderlyingLevel(employee_id)) from employee_info where higher_id=@emploryee_id)
end
)
end
Èç¹ûÓÃͬÑùµÄµÝ¹é·½·¨ÔõôµÃ³öÒ¶×ÓµÄ×ÜÊý?
×Ô¼ºÏȶ¥¡£ÎÒÕâÓÐÒ»¸ö£¬ÇóÒ¶×ÓÉî¶ÈµÄ´úÂë¡£ ÈçÏ£º
SQL code:
create function Getunderlyinglevel(@emploryee_id as varchar(50))
--»ñȡijԱ¹¤Ëù´¦Ö°Î»²ã´ÎµÄÉî¶È
returns int
as
begin
RETURN
(
case when exists (select *
Ïà¹ØÎÊ´ð£º
sql¿ÉÒÔÓÐÁ½¸öÒÔÉϵĴ¥·¢Æ÷Â𣿣¿ÎÒÖ¸µÄÊÇfor´¥·¢Æ÷£¬ÄÇÆäËûµÄÄØ£¿£¿
ʲôÒâ˼£¿
¿ÉÒÔµÄ
10¸ö¶¼Ã»ÎÊÌâ
¿ÉÊÇÎÒдÁËÁ½¸öfor insert ´¥·¢Æ÷£¬Ôì³É½ø³Ì×èÈûÁËÄØ£¿Ôõô°ìÄØ£¿Çë¸ßÈËÖ¸µã
......
ÎÒÓжà¸ö±íA B C ½á¹¹ÊÇÒ»ÑùµÄ£¬¶¼ÓÐ2¸ö×Ö¶ÎnameºÍcontent,ÎÒÒªËÑË÷ËùÒÔ±íËùÓÐ×Ö¶ÎÖаüº¬¡°Öйú¡±µÄÄÚÈÝ Õâ¸öSQLÓï¾äÔõôд
ÈçºÎ½«¶à¸ö±íµÄ²éѯ½á¹ûÁ¬³ÉÒ»¸ö±í Õâ¸öSQLÓï¾äÔõôд ±íµÄ½á¹¹ÊÇÒ»ÑùµÄ
ÀýÈç£ ......
ÇëÎÊһϣ¬ÍâÍøÁ½Ì¨SQLSERVERʵÀýÊý¾Ý´«Ê䣬ÓÐûÓвÉÓÃÊý¾ÝѹËõºÍ¼ÓÃÜ¡£Ñ¹Ëõ±ÈÊǶàÉÙ£¬¼ÓÃÜÊÇʲô¼ÓÃÜËã·¨£¿Ïà¹ØÎĵµÄÄÀï¿ÉÒÔÕÒµ½£¿Ð»Ð»
ÎÒÒ²ÏëÖªµÀ£¡¹Ø×¢´ËÌù£¡
¹Ø×¢¡«¡«
Êý¾Ý¿â´óÅ£¶¼ÄÄÈ¥Á˰¡£¿
......
ÓÐÁ½¸öͬÑùµÄ±í½á¹¹
±í½á¹¹ÈçÏ£º
id£¨ÐòºÅ£© parentid £¨¸¸½áµãÐòºÅ£© name(½áµãÃû³Æ)
±í1 ¼Ç¼ 1 0 aaa
2 ......
³¡¾°ÈçÏ£º
¿Í»§°Ñ±¸·ÝºÃµÄÊý¾Ý¿â£¬·¢¸øÎÒ£¬ÎÒÔÚ±¾»ú»¹Ôºó£¬ÔËÐÐдºÃµÄ´æ´¢¹ý³Ì£¬±È½Ï¿ì£¬²¢ÇÒÔÚʵʩÄDZßÔËÐÐͬÑù±È½Ï¿ì¡£µ«Êǵ±ÊµÊ©ÔÚ¿Í»§ÄDZßÔËÐеÄʱºòËٶȾͷdz£µÄÂý£¬Ê±¼ä³¬³öÁ˳ÌÐòµÄʱ¼äÏÞÖÆ¡£Ô¶³ÌÔÚ¿Í»§ÄÇ ......