日期:2014-05-17  浏览次数:20620 次

菜鸟求省市区简单 SQL
一个省市区表 三个字段如下
id 区域id
name 名称
parentid 父id
比如
id  name      parentid    isY
1   辽宁省     0          null    
2   大连市     1          null
3   甘井子区   2           1
4   鞍山省     1          null
5   铁西区     4           0
6   铁东区     5            1
……
现在想把isY 的省市区查询出来 (注:只有区isY有值)
结果格式
省, 市, 区, 区的id, isY
请问各位大侠怎么实现?
sql

------解决方案--------------------
你确定只有省市区3级啊:
;with cte_tmp as (
select 1 as id, 'LN' as name, 0 as parentid, cast(null as bit) as isY
union all
select 2,'DL',1,null
union all
select 3,'GJZ',2,1
union all
select 4,'AS',1,null
union all
select 5,'TX',4,0
union all
select 6,'TD',5,1
)
select c.name,b.name,a.name,a.id
from cte_tmp a 
left join cte_tmp b
on a.parentid = b.id
left join cte_tmp c
on b.parentid = c.id
where a.isY = 1