注册 登录
编程论坛 SQL Server论坛

sql语句查询问题

drychq 发布于 2008-10-25 21:21, 1079 次点击
我 现在有个图书类型表。。
表名:Type
   类型编号 类型名称  二级类型编号   
   TypeId   TypeName  TypeParentID
   2    外语       NULL
   17    英语       2
   18    法语       2
   19    德语       2
   1    计算机    NULL
   8    编程    1
这个里面存有2个级别的 图书类别
一级图书类别的TypeParentID 为空,二级TypeParentID 里面放的是一级图书类型编号

现在我想让查询的结果变为
类型编号  二级类型名称 一级类型名称
TypeId   TypeName  TypeName
17    英语      外语
8    编程    计算机

这条SQL语句该怎么写 啊 ???????
3 回复
#2
三断笛2008-10-25 22:53
怎么没有个ParentType表呢?这样的设计是不是不够规范?
作自身连接或者写个函数获取ParentTypeName,我写第二种方法,第一种太简单了
程序代码:

create function get_ParentType(@TypeID int)
returns nvarchar(50)
as
begin
declare @ParentType nvarchar(50);
declare @ParentTypeID int ;
---获取ParentTypeID
select top 1 @parentTypeID=typeid from type where typeId=@typeid;

---获取ParentTypeID对应的TypeName
select top 1 @ParentType=typename from type where typeID=@ParenttypeID;
return @ParentType;
end

---调用
select typeId,typeName,dbo.get_ParentType(TypeID) ParentType From Type
手写的没验证了,自己试下,有问题再发上来
#3
drychq2008-10-25 23:39
这样 写 是可以
 但是这样如果是一级图书类型的话
typeName,ParentType会显示一样的一级类型名称
 我需要二级类型名称不显示
#4
三断笛2008-10-26 00:30
有上面那个函数了,你自己改一下吧,很简单了,全说出来就没意义了,自己动动脑子,函数改动一下就OK了
1