这样的SQL语句怎么些??

yigenanren 2007-04-30 11:01:59
表A:
A_ID 姓名

表B:

B_id 标题 申请人ID 审核人ID 删除人ID


查询结果:

B_id 标题 申请人姓名 审核人姓名 删除人姓名


各位帮忙看看,sql语句应该怎么写??
谢谢!!
...全文
243 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rookie_one 2007-04-30
  • 打赏
  • 举报
回复
表A:
create table #A(A_ID int,姓名 varchar(10))
insert #A
select 1,'aa' union all
select 2,'bb' union all
select 3,'cc' union all
select 4,'dd'


表B:
create table #B(B_id int,标题 varchar(10) ,申请人ID int, 审核人ID int,删除人ID int)
insert #B
select 1,'rr',1,2,3 union all
select 2,'gg',2,2,3 union all
select 3,'hh',3,3,1


select t2.B_id,t2.标题,申请人姓名=(select 姓名 from #A where A_ID=t2.申请人ID),
审核人姓名=(select 姓名 from #A where A_ID=t2.审核人ID),
删除人姓名=(select 姓名 from #A where A_ID=t2.删除人ID)
from #B t2

------------------
1 rr aa bb cc
2 gg bb bb cc
3 hh cc cc aa
用心做软件 2007-04-30
  • 打赏
  • 举报
回复
select B_id,标题,(select 姓名 from A where a.A_ID = b.申请人ID ) as 申请人姓名,(select 姓名 from A where a.A_ID = b.审核人姓名) as 审核人姓名,(select 姓名 from A where a.A_ID = b.删除人姓名 ) as 删除人姓名 from b
playwarcraft 2007-04-30
  • 打赏
  • 举报
回复
select B_id,标题,a1.姓名 as 申请人姓名 ,a2.姓名 as 审核人姓名,a3.姓名 as 删除人姓名
from B
left join A a1
on a1.A_ID=B.申请人ID
left join A a2
on a2.A_ID=B.审核人ID
left join A a3
on a3.A_ID=B.删除人ID
yigenanren 2007-04-30
  • 打赏
  • 举报
回复
还有个问题:
表结构:
ID 标题 简介 所属上级
1 书 0
2 计算机 1
3 C语言 2

要求查询结果
ID 标题 简介 所属上级
3 C语言 计算机
各位高手帮忙看看
wsyplzbfdl 2007-04-30
  • 打赏
  • 举报
回复
写个函数
create function f_getname(@id int)
returns varchar(20)
go
begin
return(select name from 表A where a_id=@id)
end

select B_id 标题 dbo.f_getname(申请人ID) as 申请人姓名,dbo.f_getname(审核人ID) as 审核人姓名 ,dbo.f_getname(删除人ID) as 删除人姓名 from 表B
yigenanren 2007-04-30
  • 打赏
  • 举报
回复
谢谢各位,解决了,结帖!
rookie_one 2007-04-30
  • 打赏
  • 举报
回复
函数方法
表A:
create table A(A_ID int,姓名 varchar(10))
insert A
select 1,'aa' union all
select 2,'bb' union all
select 3,'cc' union all
select 4,'dd'


表B:
create table B(B_id int,标题 varchar(10) ,申请人ID int, 审核人ID int,删除人ID int)
insert B
select 1,'rr',1,2,3 union all
select 2,'gg',2,2,3 union all
select 3,'hh',3,3,1


create function fun_name(@id int)
returns varchar(10)
as
begin
declare @str varchar(10)
select @str=姓名 from A where A_ID=@id
return @str
end



select B_id , 标题 , dbo.fun_name(申请人ID) as 申请人姓名,dbo.fun_name(审核人ID) as 审核人姓名 ,dbo.fun_name(删除人ID) as 删除人姓名 from B


--------------------
1 rr aa bb cc
2 gg bb bb cc
3 hh cc cc aa
rookie_one 2007-04-30
  • 打赏
  • 举报
回复
create function fun_name(@id int)
returns varchar(10)
as

begin
declare @str varchar(10)
select @str=姓名 from A where A_ID=@id
return @str
end
yigenanren 2007-04-30
  • 打赏
  • 举报
回复
create function f_getname(@id int)
returns varchar(20)
go
begin
return(select name from 表A where a_id=@id)
end

这样定义出错了!

服务器: 消息 170,级别 15,状态 1,过程 f_getname,行 2
第 2 行: ')' 附近有语法错误。
服务器: 消息 137,级别 15,状态 2,行 2
必须声明变量 '@id'。
yigenanren 2007-04-30
  • 打赏
  • 举报
回复
想用函数来实现,但出错了!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧