使用DataSet进行LEFT OUTER JOIN

时间:2012-01-02 14:53:47

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

我有以下两个表:

部门(DepartmentID(PK),DepartmentName) 项目(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的数据集用于部门和项目。

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

提前谢谢

2 个答案:

答案 0 :(得分:1)

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

MAX(d.DepartmentName) AS DeptName

编辑:

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

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

enter image description here

答案 1 :(得分:0)

我相信您要寻找的解决方案是在数据集中添加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);