【问题标题】:LEFT OUTER JOIN with DataSets与数据集的左外连接
【发布时间】:2012-01-02 14:53:47
【问题描述】:

我有以下两张表:

部门(部门 ID (PK)、部门名称) 项目(ProjectID (PK)、DepartmentID (FK))

我想创建一个显示 DepartmentID、DepartmentName 和 NoOfProjectsManagedbyDepartment 的水晶报表

我知道我可以使用以下查询获得该结果:

SELECT d.DepartmentID, d.DepartmentName, 
       Count(p.ProjectID) AS NoOfProjectsManagedByDepartment
FROM Departments d LEFT OUTER JOIN Projects p 
     ON d.DepartmentID = p.DepartmentID
GROUP BY d.DepartmentID, d.DepartmentName

在 Crystal Reports 中,我使用一个包含两个数据表的数据集,用于部门和项目。

我的问题是,如何在两个 DataTables 上执行 LEFT OUTER JOIN 并在水晶报表中显示我想要的结果?请帮忙。

提前谢谢你

【问题讨论】:

    标签: c# crystal-reports dataset left-join


    【解决方案1】:

    为什么不从上面的查询中创建一个单独的 DataTable?顺便说一句,部门名称应该是 GROUP BY 的一部分,或者更好的是,具有聚合功能

    MAX(d.DepartmentName) AS DeptName
    

    编辑:

    外连接是 SQL 查询的问题,而不是 DataTables 的问题。

    使用快捷菜单中的数据库专家(数据库 > 数据库专家...)。在这里,选择当前连接(不是数据集)并使用“添加命令”。这将打开一个 SQL 查询编辑器,您可以在其中输入上述查询。

    【讨论】:

    • 嗨 Olivier,我实际上是 Crystal Reports 的新手,我想知道在上述情况下是否可以使用 LEFT OUTER JOIN。
    【解决方案2】:

    我相信您正在寻找的解决方案是将DataRelation 添加到数据集。

    // Fetch the columns in the relationship
    var parentColumn = DataSet1.Tables["Department"].Columns["(DepartmentID"];
    var childColumn = DataSet1.Tables["Projects"].Columns["(DepartmentID"];
    
    // Create the relation
    var relation = new DataRelation("ProjectsDepartments", parentColumn, childColumn);
    
    // And add it to the dataset
    DataSet1.Relations.Add(relation);
    

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多