现在有一个信息表,还有一个字典表,字典表有两个主键,一个是类别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'求问,怎么才能级联几次就可以得出同样的结果。

解决方案 »

  1.   

    select a.*,z1.名称 from 信息表 a 
    left join 字典表 as z1 ON a.type1 = z1.ID and z1.类别ID = a.某类别ID 
      

  2.   

    举个例子:就是 A表 记录了人物信息:
    ID 姓名 性别 年龄 工种
    --------------------
    01 张三    A  36   F
    02 李四    B  33   S
    ……B表是字典表(类别和ID是双主键),记录了所有可选择的东西
    类别 ID 名称
    -----------
    性别  A   男
    性别  B   女
    工种  F   技术员
    工种  S   经理
    ……需要输出 01 张三 男 36 技术员
    02 李四 女 33 经理
      

  3.   

    写一个函数出来:
    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 
      

  4.   

    7楼的无非把join改成了函数而已
    没啥区别还是老老实实的join方便维护