【问题标题】:How to join 3 tables using SQL code in C# - Windows Forms?如何在 C# - Windows 窗体中使用 SQL 代码连接 3 个表?
【发布时间】:2017-01-08 19:53:23
【问题描述】:

我的 SQL 数据库中有 3 个表(EmployeeMasterTripPayrollDeduction)。

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

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

【问题讨论】:

  • 您使用的是什么RDBMS?请添加相关标签。另外:请张贴表格结构,以便我们有事可做...
  • 到目前为止你尝试过什么??
  • 看起来你有作业要做。至少提供场景的 ERD。

标签: c# sql datagrid


【解决方案1】:
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

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

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多