界面:有发港、到港下拉框
 表目:一张主表(发港、船名、日期、时间、到港);
       编号表:(港口编号、港口名)
 
我的做法:区分港口表,再加一张,给他一个别名
   select 编号表.港口名,主表.船名,主表.日期,主表.时间,
加的表.到港 from 主表 
left join 编号表 on 主表.发港=编号表.港口编号
left join 加的表 on 主表.到港=加的表.到港编号结果:查询分析器数据一切正常问题:能否不多加到港表,而给发港和到港初始化?可能的做法:select 编号表.港口名,主表.船名,主表.日期,主表.时间,
主表.到港 from 主表 
left join 编号表 on 主表.发港=编号表.港口编号 or 主表.到港=编号表.到港编号结果:查询分析器中到港和发港处的数据一样,而且每条记录都有重的,如果能禁掉
重复的记录,则结果一切正常。考虑用distinct禁,但没有任何效果。
 帮帮忙吧,有什么好的想法没有???
 先谢过!    

解决方案 »

  1.   

    select b.港口名 发港,a.船名,a.日期,a.时间,c.港口名 到港
    from 主表 a
    left join 编号表 b on a.发港=b.港口编号
    left join 编号表 c on a.到港=c.港口编号
    where ...
      

  2.   

    谢谢yangao的回复,你的这种做法完全可以的,将港口拆分出另一张表。我的意思是发港.到港,就一张港口编号表。
     where条件可以去考虑
      谢谢!
      

  3.   

    不好意思啊,我没有把问题说清楚!实在抱歉!!!
      问题是这样的:发港和到港就一张表b
    select b.港口名 发港,a.船名,a.日期,a.时间,b.港口名 到港from 主表 a
    left join 编号表 b on a.发港=b.港口编号
    left join 编号表 b on a.到港=b.港口编号
      结果:查询分析器跑一遍报错(Join后不能拥有相同的表明)
      
      我现在处理的方法:
    select b.港口名 发港,a.船名,a.日期,a.时间,b.港口名 到港from 主表 a
    left join 编号表 b on a.发港=b.港口编号 or on a.到港=b.港口编号
      结果:查询分析器跑一遍每条记录都有重复的,dinstict也禁不掉
      问题:
      1)要是能把重复的记录去掉就好了
      2)或者有更好的处理方法
      

  4.   

    select b.港口名 发港,a.船名,a.日期,a.时间,c.港口名 到港from 主表 a
    left join 编号表 b on a.发港=b.港口编号
    left join (select 港口编号,港口名 from b) c on a.到港=c.港口编号
      

  5.   

    select b.港口名 发港,a.船名,a.日期,a.时间,c.港口名 到港from 主表 a
    left join 编号表 b on a.发港=b.港口编号
    left join 编号表 c on a.到港=b.港口编号应该不会有问题!