问题描述
比如我用两个SQL语句从数据库中得到两个表的结果,如下:stringSQL_1="select*fromtable1whereid='abc'";stringSQL_2="select*fromtable2wherexuehao='2008'";
得到以上两个表之后,我想通过一个DataSet装载这两个表:dt1和dt2;如果两个表中的其它数据不一样,但是有个相同的主键,我如何能够通过程序来对这两个表进行计算?计算好了之后再在一个DataGridView中显示出来。请各位大哥赐教,需要正确的代码!记得我是用c#来实现的哦,用的是vs2005或vs2008都可以;感谢了!
解决方案
解决方案二:
帮你顶!!
解决方案三:
不太明白。两个表中其它数据不一样是指有一个字段的值不一样就算么?
解决方案四:
ds=newdataset();adapter=newadapter();command1.commandtext=SQL_1;adapter.commad=command1;adapter.fill(ds,"T1");command2.commandtext=SQL_2;adapter.commad=command2;adapter.fill(ds,"T2");------------------------------如果结构不一样,不可以联合到一起查询.你这样查到一个DATASET和2个DATASET没什么区别呀,一样都是要一个一个取出来算的.再构造出一个新的dataset或datatable-----DataGridView只能显示一个DATASET.table的内容
解决方案五:
你想怎么样计算?大概说明一下。
解决方案六:
引用3楼HeddaZ的回复:
ds=newdataset();adapter=newadapter();command1.commandtext=SQL_1;adapter.commad=command1;adapter.fill(ds,"T1");command2.commandtext=SQL_2;adapter.commad=command2;adapter.fill(ds,"T2");------------------------------如果结构不一样,不可以联合到一起查询.你这样查到一个DATASET和2个DATASET没什么区别呀,一样都是要一个一个取出来算的.再构造出一个新的dataset或datatab…
他的意思是把两个TABLE的不一样的数据找出来,重组到一个VIEW里。并非作用到SQL里吧?那得把查出的T1的每条数据遍历到T2中查询,通过主键挑出来,插入到一个新的TABLE
解决方案七:
看有沒有什么啟示,主表增加一個用來計算從表匯總值的字段,其它相關計算也可以效仿,至于你說的比較就不很清楚什么意思usingSystem;usingSystem.Data;usingSystem.Data.SqlClient;namespaceAddAggregateChildColumnDataTable{classProgram{staticvoidMain(string[]args){stringsqlConnectString="DataSource=(local);"+"Integratedsecurity=SSPI;InitialCatalog=AdventureWorks;";stringsqlSelect=@"SELECT*FROMSales.SalesOrderHeader;SELECT*FROMSales.SalesOrderDetail;";DataSetds=newDataSet();//FilltheDataSetSqlDataAdapterda=newSqlDataAdapter(sqlSelect,sqlConnectString);da.TableMappings.Add("Table","SalesOrderHeader");da.TableMappings.Add("Table1","SalesOrderDetail");da.Fill(ds);//RelatetheHeaderandOrdertablesintheDataSetDataRelationdr=newDataRelation("SalesOrderHeader_SalesOrderDetail",ds.Tables["SalesOrderHeader"].Columns["SalesOrderID"],ds.Tables["SalesOrderDetail"].Columns["SalesOrderID"]);ds.Relations.Add(dr);//AddacolumntotheSalesOrderHeadertablesummingall//LineTotalvaluesinSalesOrderDetailds.Tables["SalesOrderHeader"].Columns.Add("SumDetailLineTotal",typeof(decimal),"SUM(Child.LineTotal)");//Outputfieldsfromfirstthreeheaderrowswithdetailfor(inti=0;i<3;i++){DataRowrowHeader=ds.Tables["SalesOrderHeader"].Rows[i];Console.WriteLine("HEADER:OrderID={0},CustomerID={1},"+"SumDetailLineTotal={2}",rowHeader["SalesOrderID"],rowHeader["CustomerID"],rowHeader["SumDetailLineTotal"]);foreach(DataRowrowDetailinrowHeader.GetChildRows(dr)){Console.WriteLine("tDETAIL:OrderID={0},DetailID={1},"+"LineTotal={2}",rowDetail["SalesOrderID"],rowDetail["SalesOrderDetailID"],rowDetail["LineTotal"]);}}Console.WriteLine("nPressanykeytocontinue.");Console.ReadKey();}}}
解决方案八:
就是3楼说的那样,我现在两个表已经填充了到了一个dataset里面去了,如何对已经填充到dataset里面去的几个表进行二次计算,再返回一个表,然后把这个表显示在DataGridView里面。不晓得具体怎么实现。也可以是每一个表都填充一个dataset,然后对两个或多个dataset中的table进行二次计算;我的意思是想这样的,我本来可以在数据库中通过SQL语句来实现这个功能,但是因为数据库中一个表有上百万条记录,我如果在数据库中进行计算的法,感觉速度很慢,我如果只是提取其中的某些数据,通过程序来进行计算,速度肯定快些你们懂我的意思了没有?我现在就是不知道方法来实现;
解决方案九:
DataTabledt1=DataSet.Tables[0];DataTabledt2=DataSet.Tables[1];stringprimaryKey=dt1["yourPK"].ToString();//...计算...
解决方案十:
就是3楼说的那样,我现在两个表已经填充了到了一个dataset里面去了,如何对已经填充到dataset里面去的几个表进行二次计算,再返回一个表,然后把这个表显示在DataGridView里面。==这个二次计算要做什么工作?两个表的字段能对上么?
解决方案十一:
可以对上
解决方案十二:
DataRelationrelation=newDataRelation("relationName",tb1.Column[i],tb2.Column[j]);dataSet.Relations.Add(relation);//dataSet为DataSet//显示时绑定tb1,每次绑定时取到tb1里的DataRowDataRow[]tb2Rows=tb1Row.policy.GetChildRows("relationName")//有了tb1里的tb1Row和tb2关联的rows该怎么计算就怎么计算啦
解决方案十三:
关注+学习!!
解决方案十四:
这种需求最好通过sql语句实现,哪怕用存储过程也行。
解决方案十五:
我就是不想通过存储过程来完成,想通过程序来实现这个功能。没有好的方法吗?我想应该是可以的,但是就是不知道从何下手!
解决方案:很经典的问题,可以使用ADO.NET中的表达式http://www.microsoft.com/china/MSDN/library/data/dataAccess/ADONETEXP.mspx其他http://topic.csdn.net/u/20080408/22/5c0909df-1502-4ebe-9f97-f9398372affa.html
解决方案:关填充的问题,有需要可以参考,http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspxhttp://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx