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