我有两个表,请问怎么把两个表捆到一个DataGrid中
表名P1 和 P2, 两个表里都有一个ID字段,查询时用输入ID得到结果目前我只会这样
string s = "select * from p1,p2";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(s,myconn);
da.Fill(ds,"Table");
DataGrid1.DataSource  = ds.Tables["Table"].DefaultView;
DataGrid1.DataBind();但是得出的结果不是想要的, 表和表串行了,同一条记录变成了好几行我想要这种结果是,在控件里输入ID后,只显示一条记录
p1.id   p1.A    p1.B  p2.X  p2.y
1001      5       7     8    11
请大家帮我写个简单的代码,谢谢了

解决方案 »

  1.   

    SELECT p1.id, p1.A, p1.B, p2.X, p2.Y
    FROM p1 INNER JOIN
          p2 ON p1.id = p2.id
    WHERE (p1.id = "输入ID")或者SELECT p1.id, p1.A, p1.B, p2.X, p2.Y
    FROM p1 INNER JOIN
          p2 ON p1.id = p2.id
    WHERE (p2.id = "输入ID")
      

  2.   

    楼主应该学习下联合查询特别是join的几种类型,在需要匹配null记录的时候用left/right join
      

  3.   

    不行啊, 假设P1里ID有“1002” P2里ID没有这个值,  那用这条语句 p1.id = p2.id
    将导致用户输入ID1002时,P1表查不出来,因为P2表里没有这个ID记录大家帮帮我 两个表P1,P2里都有不同的ID值,我要的结果是用户输入ID号后,得到一条记录如  p1表和p2表都有id值 1001时p1.id   p1.A    p1.B  p2.X  p2.y
    1001      5       7     8    11
    -------------------------------------------------------- p1表有id值 1002时 2表id没有这个值时p1.id   p1.A    p1.B  p2.X  p2.y
    1002      5       空     空   空   
      

  4.   

    SELECT p1.id, p1.a, p1.b, p2.x,p2.y
    FROM p1 LEFT OUTER JOIN
          p2 ON p1.id = p2.id
    WHERE (a.id = '1002')