表1
ID     DatapointID       Value   
1        10000            100 
2        20101            200 
3        30004            300
4        19999            400
5        88888            500
表2
ID            DatapointID         Formula
1               10000              HELLO
2               20101                HI
3               30004           how are you 
4               19999               fine
5               88888                OK我想通过DatapointID的唯一性,关联起这两个表显示到datagridview中。用如下SQL语句,可以达到我的效果—>SqlDataAdapter da = new SqlDataAdapter("select A.[Value],B.[Formula] from 表1 as A INNER JOIN 表2 as B on A.DatapointID = B.DatapointID", con);
现在有一个新问题,假如表2不全的话,举个例子—>表2
ID            DatapointID         Formula
1               10000              HELLO
2               20101                HI
5               88888                OK
那么,如果还用上面的SQL语句的话,datagridview显示如下:
ID     DatapointID       Value      Formula
1        10000            100        HELLO
2        20101            200          HI
5        88888            500          OK
换句话说,表2有几行,datagridview中就显示几行,实际上我想看到的效果是—>
ID     DatapointID       Value          Formula
1        10000            100             HELLO
2        20101            200              HI
3        30004            300
4        19999            400
5        88888            500              OK
也就是说,表2中没有的,datagridview中Formula列为空罢了。请问如何实现这个功能,希望高手指点,万分感激!!!!

解决方案 »

  1.   

    select A.[Value],B.[Formula] from 表1 as A LEFT JOIN 表2 as B on A.DatapointID = B.DatapointID直接外连接就可以了INNER JOIN  改成LEFT JOIN
      

  2.   

    LZ好好去把SQL基础学学撒
    LEFT   JOIN   或   LEFT   OUTER   JOIN。     
    左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 当然也可以RIGHT JOIN 要看你哪个表为主表了 
      

  3.   

    inner join 是取两表的交集,这种情况应该用left join 或right join
      

  4.   

       left join 默认查出坐表的全部信息,不匹配 on 后面条件的字段显示为空
       right join 与left join反之,显示右表的全部信息,不匹配 on 后面条件的字段显示为空   可以去查看一下MSSql的SDK
       阐述地更详细些。
      

  5.   

    select A.[Value],B.[Formula] from 表1 as A LEFT JOIN 表2 as B on A.DatapointID = B.DatapointID
    表2是DatapointID是外键吧!
    引用了表1的DatapointID