已知province_id为省,city_id为市,country_id为县,都为number类型,有A,B,C三个表,
A中表是存放数据的-有关键字段province_id(number),name为市和县的结合是varchar2类型的,
B中结构像树形表(省--市--县),有id,parent_id,
(id parent_id
1 0
2 1
3 1
4 2
5 1)
现在要插入将A中数据到C表中去,A中province_id已经是对应C中的province_id,
但A中的name就要根据情况从B表中找到相应的市id和县id,然后再对应插入到C表中的city_id,country_id,
(加一点,B表中name和A表中name一样)
如今想根据A,B表中name的情况去查询,语句如下:
1.insert into C(province_id,city_id,county_id)
2.select s.province_id, //省id
3.case when s.provinceid=s.parent_region_id then s.id else 0 end, //市id
4.case when s.provinceid!=s.parent_region_id then 1 else 0 end //县id
5.from (select * from A a left join B b on b.name=a.name) s;
关键是3,4行,当这样查出来结果还是不行的,要么是市id出来了而县id没出来,要么是市id没出来而县id出来了
怎样做到让市id和县id都能够有值呢,冥思苦想没结果,诚恳静候大家的解答,谢谢
A中表是存放数据的-有关键字段province_id(number),name为市和县的结合是varchar2类型的,
B中结构像树形表(省--市--县),有id,parent_id,
(id parent_id
1 0
2 1
3 1
4 2
5 1)
现在要插入将A中数据到C表中去,A中province_id已经是对应C中的province_id,
但A中的name就要根据情况从B表中找到相应的市id和县id,然后再对应插入到C表中的city_id,country_id,
(加一点,B表中name和A表中name一样)
如今想根据A,B表中name的情况去查询,语句如下:
1.insert into C(province_id,city_id,county_id)
2.select s.province_id, //省id
3.case when s.provinceid=s.parent_region_id then s.id else 0 end, //市id
4.case when s.provinceid!=s.parent_region_id then 1 else 0 end //县id
5.from (select * from A a left join B b on b.name=a.name) s;
关键是3,4行,当这样查出来结果还是不行的,要么是市id出来了而县id没出来,要么是市id没出来而县id出来了
怎样做到让市id和县id都能够有值呢,冥思苦想没结果,诚恳静候大家的解答,谢谢
用start with id = '已知的部门id' connect by prior id = parentid 把该部门所有的下级部门都查出来了
start with id = '已知的部门id' connect by prior parentid = id 把该部门所有的上级部门都查出来了