我的编码表里面还有其他内容,没给完,里面有一项是区分类别的。 不过我想直接用person表里的编码来进行定位,1对1,需不着要类别代码吧。

解决方案 »

  1.   

    SELECT p.id, p.name, c1.name, c2.name FROM Person p 
      LEFT JOIN Codes c1 ON c1.id=p.行业 
      LEFT JOIN Codes c2 ON c2.id=p.居住地
      

  2.   

    同意小木。
    如果还有别的项,继续将Codes表用别名代替。
    SELECT p.id, p.name, c1.name, c2.name, ... FROM Person p 
      LEFT JOIN Codes c1 ON c1.id=p.行业 
      LEFT JOIN Codes c2 ON c2.id=p.居住地
      ...
      

  3.   

    To lxf_1976(小木) & ezhou(煮花生),我的表里面想行业和居住地的项有很多项,10项以上,这种查询会不会效率不高?  
      
    希望其他人也来探讨探讨。
      

  4.   

    >>>> 行业和居住地的项有很多项,10项以上
    你的意思是有两个类别,每个类别很有很多项!
    是吧!
    没太大关系的,
    性能会低一点,
    但在数据量不是非常大的情况下几乎看不出来!
      

  5.   

    To lxf_1976(小木),就是你说的那个意思。所以很麻烦,我现在就是用的把代码表全部读到一个数组里,key就是代码编号,value就是具体描述。  查询出代码,然后取值就可以了。
      

  6.   

    1. 如果Codes表数据不多,楼主的解决方法也不错!即在应用层完成对应名称的转换
    2. 如果每次要查询的用户数有限制,例如limit 20,按left join 方法直接查询key代表的含义,性能应该不会有太大的影响!
      

  7.   

    To 小木,恩。我的Codes表现在有600多条记录。将就用着此方法吧。