如何在c# - Windows窗体中使用SQL代码连接3个表

本文关键字:SQL 代码 3个表 连接 窗体 Windows | 更新日期: 2023-09-27 18:05:09

我有3个表在我的SQL数据库(EmployeeMaster, TripPayroll, Deduction)。

我需要在我的datagrid的前3列中反映EmployeeMaster中所有员工的IDNo, LastName, FirstName。然后在DataGrid的第4列中,我想对第1列中employee的IDNo的TripPayroll的金额求和。代码应该与第一列的IDNo相同的TripPayroll中的金额相加。然后在DataGrid的第5列中,我想将IDNo与第1列相同的扣除表中的所有金额相加,但如果IDNo在扣除表中没有对应的IDNo,则值为0.00。然后在第6列中,我想通过减去TripPayroll - Deduction中的Amount来获得差值。

string cs = ConfigurationManager.ConnectionStrings["DbaseConnection2"].ConnectionString;
SqlConnection con = new SqlConnection(cs);
con.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT EmployeeMaster.IDNo, EmployeeMaster.LastName, EmployeeMaster.FirstName, COUNT(TripPayroll.DTRNo) AS No_Trip, SUM(TripPayroll.Rate) AS Gross_Pay, ISNULL(SUM(Deduction.Amount),'0.00') AS Deduction, SUM(TripPayroll.Rate)-ISNULL(SUM(Deduction.Amount),'0.00') AS Total_Pay FROM EmployeeMaster LEFT JOIN TripPayroll ON EmployeeMaster.IDNo = TripPayroll.IDNo LEFT JOIN Deduction ON EmployeeMaster.IDNo=Deduction.IDNo WHERE (TripPayroll.DeliveryDate <= '" + PayrollCutOff.Text + "') AND (TripPayroll.Status = 'Complete') GROUP BY EmployeeMaster.LastName, EmployeeMaster.FirstName,EmployeeMaster.IDNo", con);
DataSet ds = new DataSet();
da.Fill(ds);

Payroll_List.DataSource = ds.Tables[0];

如何在c# - Windows窗体中使用SQL代码连接3个表

select Em.IDNo,Em.LastName,Em.FirstName,Sum(TP.Amount),IsNUll(Sum(dc.Amount),0),(Tp.Amount - Dc.Amount) as AmountDiff
from EmployeeMaster Em
Inner join TripPayroll TP 
on Em.IDNo = TP.IDNo
Inner join Deduction dc
on EM.IDNo = dc.IDNo

试试这个。希望您能从这个解决方案中得到一些想法。