求救:两个表的查询
表1 navclass
id classname parentid
1 游戏 0
2 网络 1
3 单机 1
4 书籍 0
----------------------------------------------
表2 sitelist
id classid url sitename
1 3 www.163.com 游戏网站1
2 1 www.123.com 游戏网站2
3 2 www.3333.com 游戏网站3
-------------------------------------------------
需要的结果:
classname url sitename
游戏 www.163.com 游戏网站1
游戏 www.123.com 游戏网站2
游戏 www.3333.com 游戏网站2
==============================================
两个表的关系: navclass 中id是主键,也是sitelist的外键
请哪个大虾给个 查询条件
我写了好些时间了 没有写出来啥 谢谢
------解决方案--------------------select d.classname,c.url,c.sitename from sitelist c,(
select a.id,b.classname from navclass a ,navclass b where a.parentid=b.id) d where c.classid=d.id
union all
select a.classname,b.url,b.sitename from navclass a,sitelist b where a.id=b.class_id and a.classname= '游戏 '
------解决方案--------------------如果是两级:
select bb.classname,aa.url,aa.sitename from sitelist aa left join
(select a.id,isnull(b.classname,a.classname)classname from navclass a left join navclass b on a.parentid=b.id) bb on aa.classid=bb.id
---------------如果是两级以上先建一函数
create function fun_0(@id int)returns varchar(20) as
begin
declare @f_id int,@f_name varchar(20)
select @f_id=parentid,@f_name=classname from navclass where id=@id
while @f_id <> 0
select @f_id=parentid,@f_name=classname from navclass where id=@f_id
return @f_name
end
--------------------------
select dbo.fun_0(classid)classname,url,sitename from sitelist