如何在c#和Sql中只对datagridview列执行一次相同列的两个表的查询

如何在c#和Sql中只对datagridview列执行一次相同列的两个表的查询,c#,sql,join,datagridview,C#,Sql,Join,Datagridview,我有一个奇怪的问题 我在sql数据库中有两个表 所以我想写一个查询,给出两个数据表的结果 2个表具有相同的列名,如 入学编号 学生姓名 学生班 我想按照给定的图像执行该查询 执行查询后得到的数据将加载到C# 我正在使用下面的代码进行培训,但它完全与我的问题无关,请帮助我 private void report() { dataGridView4.AutoResizeColumns(); dataGridView4.AutoSizeColumnsMode

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

入学编号
学生姓名
学生班 我想按照给定的图像执行该查询 执行查询后得到的数据将加载到C#
我正在使用下面的代码进行培训,但它完全与我的问题无关,请帮助我

 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();

    }

您目前的查询:

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_标记
中的每一行都与每一行
第八到第九标记
相结合,因此,如果每个表有5行,您将得到25行(5 x 5)

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

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#值多少钱也可以清理一下:

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;
}

您目前的查询:

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_标记
中的每一行都与每一行
第八到第九标记
相结合,因此,如果每个表有5行,您将得到25行(5 x 5)

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

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#值多少钱也可以清理一下:

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;
}

在两个表之间使用“全部联合”

Select * from tenthclass_marks 
Union All 
Select * from eighth_to_ninth_marks

在两个表之间使用“全部联合”

Select * from tenthclass_marks 
Union All 
Select * from eighth_to_ninth_marks