首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c#和Sql中只对数据视图列执行两个相同列表的查询

如何在c#和Sql中只对数据视图列执行两个相同列表的查询
EN

Stack Overflow用户
提问于 2014-10-16 09:45:12
回答 2查看 1.5K关注 0票数 0

我遇到了一个奇怪的问题,我在sql数据库中有两个表,所以我想写一个查询,给出两个表的结果,数据,两个表有相同的列名

admission_number

student_name

student_class我想以给定图像的形式执行该查询

执行查询后得到的数据将加载到C#中的win-form编码的数据视图中。

我正在使用下面的代码来训练它,但是它与我的问题完全无关,请帮助我。

代码语言:javascript
复制
 private void report()
    {
        dataGridView4.AutoResizeColumns();
        dataGridView4.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;


        ConnectionStringSettings consettings = ConfigurationManager.ConnectionStrings["smssms"];
        string connectionString = consettings.ConnectionString;
        SqlConnection cn = new SqlConnection(connectionString);

        SqlCommand sqlcmd = new SqlCommand();
        SqlDataAdapter sda = new SqlDataAdapter();
        DataTable dt = new DataTable();

        cn.Open();
        //pass query 

        sqlcmd = new
SqlCommand(@"selectt.admission_number,t.student_name,t.student_class,e.admission_number,e.student_name,e.student_class
from tenthclass_marks as t,eighth_to_ninth_marks as e ", cn);
        sda = new SqlDataAdapter(sqlcmd);
        //Fill the data in the SQL Data Adapter
        sda.Fill(dt);
        //Bind it in the DataGrid View
        dataGridView4.DataSource = dt;
        cn.Close();

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-16 09:48:58

您的查询如下:

代码语言:javascript
复制
select  t.admission_number,
        t.student_name,
        t.student_class,
        e.admission_number,
        e.student_name,
        e.student_class
from    tenthclass_marks as t,
        eighth_to_ninth_marks as e 

正在生成这两个表的笛卡尔积。也就是说,tenthclass_marks中的每一行都与每一行eighth_to_ninth_marks组合在一起,所以如果每个表都有5行,那么您将得到25行(5x5)。

您需要使用UNION ALL来组合结果:

代码语言:javascript
复制
SELECT  t.admission_number,
        t.student_name,
        t.student_class
FROM    tenthclass_marks AS t
UNION ALL
SELECT  e.admission_number,
        e.student_name,
        e.student_class
FROM    eighth_to_ninth_marks AS e;

值得的是,您的c#也可以稍微清理一下:

代码语言:javascript
复制
private void report()
{
    dataGridView4.AutoResizeColumns();
    dataGridView4.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    string connectionString = ConfigurationManager.ConnectionStrings["smssms"].ConnectionString;
    string sql = @"SELECT   t.admission_number,
                            t.student_name,
                            t.student_class
                    FROM    tenthclass_marks AS t
                    UNION ALL
                    SELECT  e.admission_number,
                            e.student_name,
                            e.student_class
                    FROM    eighth_to_ninth_marks AS e;";

    DataTable dt = new DataTable();     
    using (var adapter = new SqlDataAdapter(sql, connectionString))
    {
        adapter.Fill(dt);
    }
    dataGridView4.DataSource = dt;
}
票数 4
EN

Stack Overflow用户

发布于 2014-10-16 10:05:00

在两个表之间使用UNION ALL

代码语言:javascript
复制
Select * from tenthclass_marks 
Union All 
Select * from eighth_to_ninth_marks
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26401188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档