首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MYSql 地区搜索有关问题

2012-08-28 
MYSql 地区搜索问题有一个地区表如下region_idparent_idregion_name10广东21广州31佛山42海珠区如果我需要

MYSql 地区搜索问题

有一个地区表如下 
region_id parent_id region_name 
1 0 广东 
2 1 广州 
3 1 佛山 
4 2 海珠区 

如果我需要搜索广东,则显示广东的下级地区的所有id,包括他下级的下级(如海珠区);如果我搜索的是广州,则显示广州的下级地区的所有id。

请问该如何写mysql语句呀?




附mssql的做法:

SQL code
create table tb(region_id int,         parent_id int,             region_name varchar(10))insert into tb values(1 ,                     0  ,                        '广东') insert into tb values(2 ,                     1  ,                        '广州') insert into tb values(3 ,                     1  ,                        '佛山') insert into tb values(4 ,                     2  ,                        '海珠区')go--查询指定节点及其所有子节点的函数create function f_cid(@region_id int) returns @t_level table(region_id int , level int)asbegin  declare @level int  set @level = 1  insert into @t_level select @region_id , @level  while @@ROWCOUNT > 0  begin    set @level = @level + 1    insert into @t_level select a.region_id , @level    from tb a , @t_Level b    where a.parent_id = b.region_id and b.level = @level - 1  end  returnendgo--调用函数查询1(广东)及其所有子节点select a.* from tb a , f_cid(1) b where a.region_id = b.region_id order by a.region_id/*region_id   parent_id   region_name ----------- ----------- ----------- 1           0           广东2           1           广州3           1           佛山4           2           海珠区(所影响的行数为 4 行)*/--调用函数查询2(广州)及其所有子节点select a.* from tb a , f_cid(2) b where a.region_id = b.region_id order by a.region_id/*region_id   parent_id   region_name ----------- ----------- ----------- 2           1           广州4           2           海珠区(所影响的行数为 2 行)*/drop table tb drop function f_cid


[解决办法]
不懂,帮顶

热点排行