MSSQL系列之十四 無限極分類的解決辦法

語言: CN / TW / HK

--自身連線:自連線
a:相當於員工表     b:相當於上級表
id  name ShangJiId    id  name ShangJiId
1  張三 0      1  張三 0
2  楊廣 0      2  楊廣 0
3  孫中 0      3  孫中 0
4  牛錛 1      4  牛錛 1
5  石磊 2      5  石磊 2
--







select a.id,a.name,a.ShangJiId,b.name as '上級名'from emp as a left join emp bon a.ShangJiId=b.Id


--他查的是有上級的小兵(中兵)
 

select a.id,a.name,a.ShangJiId,b.name as '上級名'from emp as a inner join emp bon a.ShangJiId=b.Id
Create table emp(id tinyint,       --員工編號name varchar(8),ShangJiId tinyint --上級的編號)insert emp values(5,'石磊',2)select * from empselect a.*,b.namefrom emp a left join emp b on a.ShangJiId = b.id


--借花獻佛 面試題
假如說,現在我們公司要做一個系統,系統針對部門進行分級,
有1級部門,2級部門,3級部門,4級部門,5級部門,6級部門,7級部門
怎麼設計表???讓咱學生用迭代的方式,來設計表...



UPS:美國快遞(和EMS差不多), 美國分部/亞太分部/歐美分部
亞太分部:大中國區/港臺地區/新加坡/...
大中國區:飛機快遞/輪船快遞/

id 下級部門 上級部門id
3   飛機快遞   2
2   大中國區   1
9   給老鼠快遞  8