select e.Employee_Id,e.Employee_Name,s.nodename Employee_Sex,e.Employee_Code,e.Employee_Logon,e.Employee_Del
from Employee e
inner join Diction s on e.Employee_Sex = s.nodeid and s.parentname = 'sex'
inner join Diction l on e.Employee_Logon = l.nodeid and l.parentname = 'logon'Diction 是数据字典 
Employee_Sex,Employee_Logon,Employee_Del 是代码 要查数据字典
inner join Diction  这句有没有什么方法只写一行 就实现查字典的功能?2 000001  男  000001   0 0

解决方案 »

  1.   

    select * from Employee e
    inner join Diction s on e.Employee_Sex = s.nodeid or e.Employee_Logon = s.nodeid 
    where s.parentname in ('sex','logon')
      

  2.   


    select e.Employee_Id,e.Employee_Name,s.nodename Employee_Sex,e.Employee_Code,e.Employee_Logon,e.Employee_Del
    from Employee e
    inner join Diction s
    on (e.Employee_Sex = s.nodeid or e.Employee_Logon = s.nodeid) and s.parentname in('sex','logon')
      

  3.   

    如果Diction表的nodeid,parentname上有索引的话,其实原先的写法就OK的.
      

  4.   

    inner join Diction l on e.Employee_Logon = l.nodeid and l.parentname = 'logon'
    这一段在Select没有显示是用于判断,两个条件同时成立可放在where里写当字段找不到也显示时用left join连接
      

  5.   

    s.parentname in('sex','logon')
    有人应该能用到索引吧?
      

  6.   

    楼主的语句两个inner join是同时满足这两个条件('sex','logon'),那样不可用 in 或 or
      

  7.   

    select e.Employee_Id,e.Employee_Name,s.nodename Employee_Sex,e.Employee_Code,e.Employee_Logon,e.Employee_Del
    from Employee e
    inner join Diction s on s.parentname = 'sex' and e.Employee_Sex = s.nodeid 
    union 
    select e.Employee_Id,e.Employee_Name,s.nodename Employee_Sex,e.Employee_Code,e.Employee_Logon,e.Employee_Del
    from Employee e
    inner join Diction l on and l.parentname = 'logon' and e.Employee_Logon = l.nodeid