2015-06-07 35 views
-1

我有一个表的数据库,我有3选择SQL语句。如何创建我的3选择SQL语句的数据表

这些选择项目具有不同的条件。我怎样才能合并这3个SQL命令的答案?

我不想将它们按行逐行合并到数据表中。有没有其他方法?

一些这样的事..

  OleDbCommand cmd = new OleDbCommand("select top "+ cont0 +" * from (select * from db where tablenumber=0) order by ID ASC", mycon); 
     OleDbDataAdapter adapt=new OleDbDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     DataTable dttemp = new DataTable(); 
     adapt = new OleDbDataAdapter(cmd); 
     adapt.Fill(dt); 
     cmd = new OleDbCommand("select top "+ cont1 +" * from (select * from db where tablenumber=1) order by ID ASC", mycon); 
     adapt = new OleDbDataAdapter(cmd); 
     adapt.Fill(dttemp); 
     foreach (DataRow row in dttemp.Rows) 
     { 
      dt.Rows.Add(row.ItemArray); 
     } 
     if (cont2 != 0) 
     { 
      cmd = new OleDbCommand("select top " + cont2 + " * from (select * from db where tablenumber=2) order by ID ASC", mycon); 
      adapt = new OleDbDataAdapter(cmd); 
      dttemp = new DataTable(); 
      adapt.Fill(dttemp); 
      foreach (DataRow row in dttemp.Rows) 
      { 
       dt.Rows.Add(row.ItemArray); 
      } 
     } 
     if (cont3 != 0) 
     { 
      cmd = new OleDbCommand("select top " + cont3 + " * from (select * from db where tablenumber=3) order by ID ASC", mycon); 
      adapt = new OleDbDataAdapter(cmd); 
      dttemp = new DataTable(); 
      adapt.Fill(dttemp); 
      foreach (DataRow row in dttemp.Rows) 
      { 
       dt.Rows.Add(row.ItemArray); 
      } 
     } 
     if (cont4 != 0) 
     { 
      cmd = new OleDbCommand("select top " + cont4 + " * from (select * from db where tablenumber=4) order by ID ASC", mycon); 
      adapt = new OleDbDataAdapter(cmd); 
      dttemp = new DataTable(); 
      adapt.Fill(dttemp); 
      foreach (DataRow row in dttemp.Rows) 
      { 
       dt.Rows.Add(row.ItemArray); 
      } 
     } 
     if (cont5 != 0) 
     { 
      cmd = new OleDbCommand("select top " + cont5 + " * from (select * from db where tablenumber=5) order by ID ASC", mycon); 
      adapt = new OleDbDataAdapter(cmd); 
      dttemp = new DataTable(); 
      adapt.Fill(dttemp); 
      foreach (DataRow row in dttemp.Rows) 
      { 
       dt.Rows.Add(row.ItemArray); 
      } 
     } 
+2

你的问题还不清楚。你是说你没有数据库吗?你想如何,何时何地创建它?它应该是什么样的数据库?软件应该能够自动创建它,还是只是一次?请编辑问题并添加相关信息。 – GolezTrol

+1

欢迎来到Stack Overflow。请参阅[如何提问](http://stackoverflow.com/help/how-to-ask)了解更多信息。谢谢。 –

+0

我有一个数据库与一个表,我有3选择sql语句那些选择具有不同条件的项目,我怎样才能合并这3个sql命令的答案?我不想将它们逐行地合并到数据表中。有没有其他方法? –

回答

0

你可以简单地将它们合并这样的:

"select * from 
    (select *, row_number() over(partition by field order by id) as rn 
    from table1 where field in(0, 5, 9)) t 
where rn <= " + cont 

编辑:

string command = "select * from (select top "+ cont0 +" * from db where tablenumber=0 order by ID) t union all 
        select * from (select top "+ cont1 +" * from db where tablenumber=1 order by ID) t"; 

if (cont2 != 0) 
    comand += " union all select * from (select top " + cont2 + " * from db where tablenumber=2 order by ID) t"; 

if (cont3 != 0) 
    comand += " union all select * from (select top " + cont3 + " * from db where tablenumber=3 order by ID) t"; 

.... 

OleDbCommand cmd = new OleDbCommand(command, mycon); 
OleDbDataAdapter adapt=new OleDbDataAdapter(cmd); 
DataTable dt = new DataTable(); 
.... 
+0

但我的sql命令有点不同。我的sql命令是:select top“+ cont +”* from(select * from db where tablenumber =“+ mychoose +”)order by ID ASC –

+0

然后将这些信息添加到您的问题中。你认为我们会猜测你有顶级? –

+0

@AfshinEzadi,参见编辑。在将来提供实际的陈述。 –