日期:2014-05-18  浏览次数:20374 次

一个查询语句100分求解!!!!!!
A                   B                 C
110000 北京 1
110100 北京市 110000
110101 东城区 110100
110102 西城区 110100
110103 崇文区 110100
110104 宣武区 110100
110105 朝阳区 110100
110106 丰台区 110100
110107 石景山区 110100
110108 海淀区 110100
110109 门头沟区 110100
110111 房山区 110100


省级字段C为1     市级字段C等于省级字段A   区级字段C又等于市级字段A
按一个城市省名得到城市和所有区


------解决方案--------------------
select * from table where left(a,2) = (select left(a,2) from table where b=省名)

行政区划的前2位是单一无二的。
------解决方案--------------------
前六位为到县区级单位.
其中前两位为省,自治区,直辖市的代码(后四位为0000).从11-65,如11--北京,21--辽宁,65--新疆
次两位为地市\自治州.(后两位为00)
最后两位为区县.
------解决方案--------------------
select * -- 选择出省级
from t_City
where B = '北京 '

union

select * --选择出省级下面的城市
from t_City
where C = (select A
from t_City
where B = '北京 ')

union

select * --选择出城市下面的区
from t_City
where C = (select A
from t_City
where C = (select A
from t_City
where B = '北京 '))
------解决方案--------------------
假如只有三层
表名为 M
select m.b,m1.b,m2.b
from M,M as m1,M as m2
where m.A=m1.C and m1.A=m2.C
and m.B= '北京 '
order by m.b,m1.b,m2.b