问两表多次级联查询的SQL语句

zxc1643397 2009-12-29 04:00:48
现在有一个信息表,还有一个字典表,字典表有两个主键,一个是类别ID,另一个是ID。

这个信息表里有两个以上的字段需要从字典表里级联。我现在用的是最笨的方法,有几个就JOIN ON几个,如

select *,z1.名称,z2.名称 from 信息表 a
JOIN 字典表 z1 ON a.type1 = z1.ID and z1.类别ID = '某类别1'
JOIN 字典表 z2 ON a.type2 = z2.ID and Z2.类别ID = '某类别2'

求问,怎么才能级联几次就可以得出同样的结果。
...全文
191 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxc1643397 2010-01-04
  • 打赏
  • 举报
回复
求问
游北亮 2009-12-30
  • 打赏
  • 举报
回复
7楼的无非把join改成了函数而已
没啥区别

还是老老实实的join方便维护
yan267 2009-12-30
  • 打赏
  • 举报
回复
写一个函数出来:


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

create FUNCTION [dbo].[fun_GetName] (
@RequestID as Nvarchar(50)
)
RETURNS Nvarchar(50) AS
BEGIN
DECLARE @FunName Nvarchar(50)
select @FunName=[名称] from B where ID=@RequestID

RETURN @FunName
END

Select A.ID,A.姓名,[dbo].[fun_GetName](A.性别) as 性别,[dbo].[fun_GetName](A.工种) as 工种 form A



kensouterry 2009-12-30
  • 打赏
  • 举报
回复
B表很混乱!Mark
zxc1643397 2009-12-30
  • 打赏
  • 举报
回复
举个例子:就是 A表 记录了人物信息:
ID 姓名 性别 年龄 工种
--------------------
01 张三 A 36 F
02 李四 B 33 S
……

B表是字典表(类别和ID是双主键),记录了所有可选择的东西
类别 ID 名称
-----------
性别 A 男
性别 B 女
工种 F 技术员
工种 S 经理
……

需要输出

01 张三 男 36 技术员
02 李四 女 33 经理
zhuxiaobo_net 2009-12-29
  • 打赏
  • 举报
回复
你不妨用SQL的视图试试
yan267 2009-12-29
  • 打赏
  • 举报
回复


select a.*,z1.名称 from 信息表 a 
left join 字典表 as z1 ON a.type1 = z1.ID and z1.类别ID = a.某类别ID
takako_mu 2009-12-29
  • 打赏
  • 举报
回复
問的問題越來越看不懂了.語文都怎麼學的...
jenny0810 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 zxc1643397 的回复:]
现在有一个信息表,还有一个字典表,字典表有两个主键,一个是类别ID,另一个是ID。

这个信息表里有两个以上的字段需要从字典表里级联。我现在用的是最笨的方法,有几个就JOIN ON几个,如

select *,z1.名称,z2.名称 from 信息表 a
JOIN 字典表 z1 ON a.type1 = z1.ID and z1.类别ID = '某类别1'
JOIN 字典表 z2 ON a.type2 = z2.ID and Z2.类别ID = '某类别2'

求问,怎么才能级联几次就可以得出同样的结果。
[/Quote]看不懂 你列出表结果及所要的数据

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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