现在有一个信息表,还有一个字典表,字典表有两个主键,一个是类别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'求问,怎么才能级联几次就可以得出同样的结果。
JOIN 字典表 z1 ON a.type1 = z1.ID and z1.类别ID = '某类别1'
JOIN 字典表 z2 ON a.type2 = z2.ID and Z2.类别ID = '某类别2'求问,怎么才能级联几次就可以得出同样的结果。
left join 字典表 as z1 ON a.type1 = z1.ID and z1.类别ID = a.某类别ID
ID 姓名 性别 年龄 工种
--------------------
01 张三 A 36 F
02 李四 B 33 S
……B表是字典表(类别和ID是双主键),记录了所有可选择的东西
类别 ID 名称
-----------
性别 A 男
性别 B 女
工种 F 技术员
工种 S 经理
……需要输出 01 张三 男 36 技术员
02 李四 女 33 经理
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
gocreate 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
ENDSelect A.ID,A.姓名,[dbo].[fun_GetName](A.性别) as 性别,[dbo].[fun_GetName](A.工种) as 工种 form A
没啥区别还是老老实实的join方便维护