一个语句,目的是要连接两个表,有三个条件,三个条件全部满足的才是想要的结果。
我写的是形如:
select a.*,b.xx,b.yy from atable as a left join btable as b 
ON a.FSITE = b.fsite AND a.NNO = b.nno AND a.PROJECT = b.project
最后出来的结果却是我想要的结果被重复了两遍,sum出来的结果就成了原值*3我怀疑是我连接的条件写得不对。因为把left jion 改成 inner join,结果也一样请教,这样的语句要怎样写?

解决方案 »

  1.   

    数据提供很麻烦。我加上了distinct,出来的结果就是想要的结果了。
    只是不知道为什么。莫非多条件查询一定要加distinct,否则就会出很多重复纪录?
    后来又看了下,并不是所有记录都重复同样的次数,有的三次有的四次
      

  2.   

    select distinct a.*, b.xx, b.yy from atable as a 
    left join btable as b ON a.FSITE = b.fsite AND a.NNO = b.nno AND a.PROJECT = b.project
      

  3.   

    A表中的fsite,nno,project相同的记录是不是很多。
    比如有2条:
    fstit nno project 其他数据
    1     2   3       4
    1     2   3       5
    那样连接出来就有2条,而不是你想要的1条
      

  4.   

    A表中的fsite,nno,project相同的记录是不是很多。
    比如有2条:
    fstit nno project 其他数据
    1     2   3       4
    1     2   3       4
    那样连接出来就有2条,而不是你想要的1条
    如果A中有2条相同的记录,B中有3条,那么LEFT JOIN出来是2条,INNER JOIN出来是4条,RIGHT JOIN出来是3条。
      

  5.   

    A表中的fsite,nno,project相同的记录是不是很多。
    比如有2条:
    fstit nno project 其他数据
    1     2   3       4
    1     2   3       4
    那样连接出来就有2条,而不是你想要的1条
    如果A中有2条相同的记录,B中有3条,那么LEFT JOIN出来是2条,INNER JOIN出来是6条,RIGHT JOIN出来是3条。