我遇到了一个奇怪的问题,我在sql数据库中有两个表,所以我想写一个查询,给出两个表的结果,数据,两个表有相同的列名
admission_number
student_name
student_class我想以给定图像的形式执行该查询

执行查询后得到的数据将加载到C#中的win-form编码的数据视图中。
我正在使用下面的代码来训练它,但是它与我的问题完全无关,请帮助我。
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();
}发布于 2014-10-16 09:48:58
您的查询如下:
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来组合结果:
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;
}发布于 2014-10-16 10:05:00
在两个表之间使用UNION ALL
Select * from tenthclass_marks
Union All
Select * from eighth_to_ninth_markshttps://stackoverflow.com/questions/26401188
复制相似问题