我做了一个模糊查询  但是又三张表是分开的  各有各的集合  所以没办法输入关键字显示在一个表里面  所以  我想把三个DataTable拼接到一起,拼接成一个新的在显示  所以拼接DataTable不会 有没有会的 发点代码瞧瞧  或者给我说说啦  谢谢 

解决方案 »

  1.   

    select 表1的字段1 as 起一个相同的新字段名 from 表1 where 字段 like '%关健字%'
    union all
    select 表2的字段1 as 起一个相同的新字段名 from 表2 where 字段 like '%关健字%'
    union all
    select 表3的字段1 as 起一个相同的新字段名 from 表1 where 字段 like '%关健字%'查询出来的结果就在同一个结果集里了
      

  2.   

    以下是我操作多个表,然后赋给数据源控件代码,供参考:
     protected void getsousuodata()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("标题", typeof(string));
            dt.Columns.Add("添加时间", typeof(string));
            dt.Columns.Add("Html", typeof(string));
            string sqlctx = "select Name,AddTime,Html from CtxNews where Name like '%" + strtitle + "%' order by AddTime desc";
            SqlDataReader drctx = MySqlHelper.ExecuteReader(sqlctx, CommandType.Text, false);
            if (drctx.HasRows)
            {
                while (drctx.Read())
                {
                    DataRow dr=dt.NewRow();
                    dr["标题"] = drctx["Name"].ToString();
                    dr["添加时间"] = drctx["AddTime"].ToString();
                    dr["Html"] = drctx["Html"].ToString();
                    dt.Rows.Add(dr) ;
                }
            }
            drctx.Close();
             string sqlsq = "select Name,AddTime,Html from SqNews where Name like '%" + strtitle + "%' order by AddTime desc";
            SqlDataReader drsq = MySqlHelper.ExecuteReader(sqlsq, CommandType.Text, false);
            if (drsq.HasRows)
            {
                while (drsq.Read())
                {
                    DataRow dr = dt.NewRow();
                    dr["标题"] = drsq["Name"].ToString();
                    dr["添加时间"] = drsq["AddTime"].ToString();
                    dr["Html"] = drsq["Html"].ToString();
                    dt.Rows.Add(dr);
                }
            }
            drsq.Close();
            GridView1.DataSource = dt.DefaultView[0].DataView;
            GridView1.DataBind();
            
            //Session["titless"] = null;
        }
      

  3.   

    自己创建一个Datatable
    然后三个Datatable分别循环取列写到创建的Datatable里面
      

  4.   

    可以先存放到dataset里面 然后再用dataset的拼接 可以拼接多个dataset 再转换成datatable
      

  5.   

    程序级别用DataTable.Merge方法DataTable schemaTable ;
    schemaTable.Merge(DataTable);数据库级别用union all
      

  6.   

    省表
    id  名称
    ----------------------------------
    1    上海
    2     北京
    市表
    id 上级id 名称
    1    1    上海
    -----------------
    区县表
    id  上级id  名称
    1    1      浦东新区
    以上是表结构
    查询语句用这样
    select 名称,'名称' as 属于 from 省表
    union all
    select a.名称 as 名称,b.属于 as 属于 from 市表 as a inner join 省表 as b on a.上级id=b.id
    union all
    select a.名称 as 名称,b.属于 as 属于 from 区表 as a inner join 市表 as b on a.上级id=b.id
      

  7.   

    select 名称,名称 as 属于 from 省表   ‘这里多写了单引号去了
    union all
    select a.名称 as 名称,b.属于 as 属于 from 市表 as a inner join 省表 as b on a.上级id=b.id
    union all
    select a.名称 as 名称,b.属于 as 属于 from 区表 as a inner join 市表 as b on a.上级id=b.id
      

  8.   

    创建一个Datatable
    然后从三个Datatable分别取数据写到创建的Datatable里面
    最后把创建的datatable 做为数据源
      

  9.   

    as是别名啊。这样方便一起使用。。
    如先前是这样:dr["标题"]。最好可以dr[0] 0第几列。
    论坛签名======================================================================Yq_pY:你好!
    截至 2011-10-31 12:05:28 前:
    你已发帖 1 个, 未结贴 1 个;
    结贴率为: 0.00%

    当您的问题得到解答后请及时结贴.

    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖如何给自己的回帖中也加上签名?
    http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx
      

  10.   


    linq 可以直接查询的,类似 sql 
      

  11.   

    你可以定义一个新的对象类型,
    这个类型用于承载你用linq查询出得数据。
      

  12.   

    顶3楼,不解释对于会玩ADO.NET的人,甚至可以在内存中生成一个简化版本的小型数据库,更别说表了
      

  13.   

    #region
    /// <summary>
    /// 合并数据集中结构相同的数据表
    /// </summary>
    /// <returns>合并后的数据表</returns>
    public DataTable MergeDataTable(DataSet ds)
    {
    try
    {
    DataTable mytb=new DataTable();
    int i=0;
    foreach(DataTable dt in ds.Tables)
    {
    if(i==0)
    {
    foreach(DataColumn dc in dt.Columns)
    {
    mytb.Columns.Add(dc.ColumnName);
    }
    } foreach(DataRow dr in dt.Rows)
    {
    object[] ary = new object[dt.Columns.Count];   
    dr.ItemArray.CopyTo(ary,0); mytb.Rows.Add(ary);//如果mytb没有列,此处会报错
    }
    i++;
    }

    return mytb;
    }
    catch(Exception ex)
    {
    Response.Write("MergeDataTable():"+ex.Message);
    return null;
    }
    }
    #endregion我这个是数据集的,你可以用DataTable数组,稍微改下代码就ok
      

  14.   


    select 表1的字段1 as 起一个相同的新字段名, '表1' as '属于' from 表1 where 字段 like '%关健字%'
    union all
    select 表2的字段1 as 起一个相同的新字段名,'表2' as '属于'  from 表2 where 字段 like '%关健字%'
    union all
    select 表3的字段1 as 起一个相同的新字段名,'表3' as '属于'  from 表1 where 字段 like '%关健字%'
    多加一列,表明这个数据来源于哪个表不就可以了?