为防止数据过多,影响查询效率,采用了分表的形式,表的建立是根据条件动态创建的,但表的数据字段和类型都一致,如:table1,table2.....tablen,现在不知道库里有这样数据字段和类型都一样的表,要查询全部的数据sql 语句怎么写啊??
select * from table1
union all
select * from table2
union all
select * from table3
这种方法是知道了库里有这样的表3张,但现在不知道有多少张,怎么做啊?望指教~~

解决方案 »

  1.   

    写存储过程,先去  select * from sysobjtcts where type='u'然后循环生成 select ** union  语句
      

  2.   

    遍历数据库的表
         protected void Page_Load(object sender, EventArgs e)
         {
             OleDbConnection conn = new OleDbConnection(ConnectionString);
             conn.Open();
            DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
             conn.Close();
             GridView1.DataSource = dt;
             GridView1.DataBind();
          }
      

  3.   

    拼接你的sql  
    "sqlString1"+"union all" +"sqlString2"+......
      

  4.   


    还是些存储过程吧。因为要进行一番判断和拼接,不是1,2句sql搞定的。
      

  5.   

    如果是MSSQL改用这个遍历就可以获得数据库的表名
    SqlConnection conn = new SqlConnection(ConnectionString);
    conn.Open();
    DataTable dt = conn.GetSchema("Tables", null);
    conn.Close();
    DataGridView1.DataSource = dt;
      

  6.   

    用的是sql server ,有这样的遍历方法没,多谢~~
      

  7.   

    可以解释下这句话的意思么?  提示:对象名  'sysobjtcts' 无效。