一张单据表有4个用户签名,此表中存放的均为用户的编码,显示时需要显示用户的姓名,不知道性能怎样,如果不行我就直接存放姓名算了,但又怕用户表更新时带来数据安全性问题请高手指点。

解决方案 »

  1.   


    select m.*,
           t1.姓名,
           t2.姓名,
           t3.姓名,
           t4.姓名
    from 单据表 m
    left join 用户表 t1 on m.编码1 = t1.编码
    left join 用户表 t2 on m.编码2 = t2.编码
    left join 用户表 t3 on m.编码3 = t3.编码
    left join 用户表 t4 on m.编码4 = t4.编码
      

  2.   

    FROM dbo.S_OrdinaryInDepotBill INNER JOIN
        dbo.HR_Personnel ON dbo.S_OrdinaryInDepotBill.BuyerCode = dbo.HR_Personnel.WorkID INNER JOIN
                          dbo.HR_Personnel AS HR_Personnel_1 ON dbo.S_OrdinaryInDepotBill.Checker = HR_Personnel_1.WorkID INNER JOIN
                          dbo.HR_Personnel AS HR_Personnel_2 ON dbo.S_OrdinaryInDepotBill.DepotManager = HR_Personnel_2.WorkID
    在创建视图时这是数据库自动生成的,inner join 与left join 相比哪种效率更高?回复后马上结帖。
      

  3.   

    inner join 与 left join 是两种不同的操作,前者要求左表与右表相关列值完全匹配,后者除完全匹配外,左表存在而右表不存在的记录也被检索到,因此,谈不上效率比较的问题.
      

  4.   

    inner join 的结果类似于:a.col1   b.col2
    11       25left join 的结果类似于:a.col1   b.col2
    11       25
    12       NULL