C# 删除数据网格视图中重复的行
我试图将两个独立表中的数据显示到数据网格视图中,我知道它可能不是为此目的而设计的,尽管我确信有一种方法可以阻止它生成多个重复行,如下所示 下面是获取数据的代码,我确实打算在以后的代码中添加一个过滤器或特定的搜索查询,如代码中所述,今天就是这样C# 删除数据网格视图中重复的行,c#,datagridview,C#,Datagridview,我试图将两个独立表中的数据显示到数据网格视图中,我知道它可能不是为此目的而设计的,尽管我确信有一种方法可以阻止它生成多个重复行,如下所示 下面是获取数据的代码,我确实打算在以后的代码中添加一个过滤器或特定的搜索查询,如代码中所述,今天就是这样 private void FillPatients() { SqlConnection connection = new SqlConnection(); //DateTime timeNow = DateTime.Now; //
private void FillPatients()
{
SqlConnection connection = new SqlConnection();
//DateTime timeNow = DateTime.Now;
//string format = "MMM ddd d HH:mm yyyy";
try
{
connection.ConnectionString = connectionPath;
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT BookingId, Date, PatientId, Firstname, Surname FROM Bookings, Patients", connection);
//cmd.Parameters.AddWithValue("@Date", timeNow.ToString(format));
SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
dap.Fill(dt);
BindingSource bs = new BindingSource();
bs.DataSource = dt;
dgv.DataSource = bs;
dap.Update(dt);
DialogResult dlgResult;
dlgResult = MessageBox.Show(
"Patients loaded",
"Patients",
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1);
}
catch (SqlException sql)
{
MessageBox.Show(sql.Message);
}
finally
{
connection.Close();
connection.Dispose();
}
}
我认为您需要将SQL更改为:
SELECT BookingId, Date, PatientId, Firstname, Surname
FROM Bookings
INNER JOIN Patients ON Patients.PatientId = Bookings.PatientId;
从注释转换而来 您的查询当前生成的是一个。本质上,这意味着您将从预订中获得每一行,并将每一行与患者的每一行相结合 你可能想要的是一个。内部联接允许您为从右侧表(在本例中为Patients)联接的记录指定谓词,因此对于每个预订,您可以根据外键获取与其关联的患者
注意:通过WHERE子句进行交叉联接可以获得相同的结果,但该子句已被弃用,并且根据RDBMS的不同,您可能会看到不同的性能。为什么不将查询更改为选择DISTINCT呢?您从中选择的第二个表在哪里。。?如果这些都存储在一个表中,那么Distinct可以返回您需要的内容,比如SqlCommand cmd=new SqlCommandSELECT Distinct BookingId、Date、PatientId、Firstname、Bookings中的姓氏、Patients、connection;还可以执行子选择或使用Where子句。。这里的许多选项似乎都不是您想要的SQL。也许您正在寻找Bookings.PatientId到Patients.PatientId的内部联接(假设您的模式支持此功能)?重复行是什么意思?如果对所有值进行比较,我在您的屏幕截图中看不到任何重复项。@wgraham我将对此进行详细说明try@AJ有些记录甚至不存在于我的表格中,例如,我没有与PatientId 2预约ID 2如果这有道理Wgraham有这个想法,R.shilling你给了我一个简单的答案,不管怎样,谢谢大家的帮助