合并查询数据结果
2009-01-23 14:23
309 查看
1. 查询数据库具有相同列结构的结果时,可以用union合并多条查询语句进行查询,可直接得出相应datatable
2. 查询数据库具有不同列的结果需要合并时,可以采用合并datatable的方法
//合并2个DT
DataTable dt3 = dt1.Clone(); //创建新表从第一个表复制结构,clone没有行数据,只有列结构
for( int i = 0 ;i < dt2.Columns.Count ;i ++ )
{
//使新表同时具备两个表的列数总和
dt3.Columns.Add( dt2.Columns[i].ColumnName ) ;
}
//复制表一的数据到新表,使新表具有和表一一样的行数
object[] obj = new object[dt3.Columns.Count];
for (int i = 0; i < dt1.Rows.Count; i++)
{
dt1.Rows[i].ItemArray.CopyTo(obj,0);
dt3.Rows.Add(obj);
}
//表二行数据少,直接复制数据到新表
if( dt1.Rows.Count >= dt2.Rows.Count )
{
for( int i = 0 ;i < dt2.Rows.Count ;i++ )
{
for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
{
dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
}
}
}
//表二行数据多,添加差的行数,再复制数据到新表
else
{
DataRow dr3 ;
for( int i = 0 ;i < dt2.Rows.Count - dt1.Rows.Count ;i ++ )
{
dr3 = dt3.NewRow() ;
dt3.Rows.Add( dr3 ) ;
}
for( int i = 0 ;i < dt2.Rows.Count ;i++ )
{
for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
{
dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
}
}
}
2. 查询数据库具有不同列的结果需要合并时,可以采用合并datatable的方法
//合并2个DT
DataTable dt3 = dt1.Clone(); //创建新表从第一个表复制结构,clone没有行数据,只有列结构
for( int i = 0 ;i < dt2.Columns.Count ;i ++ )
{
//使新表同时具备两个表的列数总和
dt3.Columns.Add( dt2.Columns[i].ColumnName ) ;
}
//复制表一的数据到新表,使新表具有和表一一样的行数
object[] obj = new object[dt3.Columns.Count];
for (int i = 0; i < dt1.Rows.Count; i++)
{
dt1.Rows[i].ItemArray.CopyTo(obj,0);
dt3.Rows.Add(obj);
}
//表二行数据少,直接复制数据到新表
if( dt1.Rows.Count >= dt2.Rows.Count )
{
for( int i = 0 ;i < dt2.Rows.Count ;i++ )
{
for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
{
dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
}
}
}
//表二行数据多,添加差的行数,再复制数据到新表
else
{
DataRow dr3 ;
for( int i = 0 ;i < dt2.Rows.Count - dt1.Rows.Count ;i ++ )
{
dr3 = dt3.NewRow() ;
dt3.Rows.Add( dr3 ) ;
}
for( int i = 0 ;i < dt2.Rows.Count ;i++ )
{
for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
{
dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
}
}
}
相关文章推荐
- sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果
- sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果
- MySQL数据库学习10-查询数据:合并查询结果、取别名
- SqlServer中的UNION操作符在合并数据时去重的原理以及UNION运算符查询结果默认排序的问题
- mysql按照每天分组查询数据结果排序不是从1到31而是1后接10
- oracle查询一列数据,合并成字符串,以,分割
- union all用法,两个查询结果,一起显示,(一般最后添加一行汇总数据可以用这个方法)
- SqlDataReader C#数据库查询结果数据
- json返回hibernate的结果会自动调用(get)查询出关联表的数据,解决方法
- 合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- mysql合并查询结果
- C++文本查询程序 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- mysql 查询数据,对结果进行随便排列
- 把查询到结果合并放在一行 JOIN非union
- MySQL将查询结果插入到数据表中
- Mysql 通过中文查询数据查不出结果问题
- mysql 查询多条结果,合并成一个结果,使用 group_concat()函数
- left join查询结果大于原始数据
- IReport | Jasperreport 无数据或查询结果集行数为0 依然展现报表