我有以下两个表:
部门(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报表中显示我想要的结果?请帮忙。
提前谢谢
答案 0 :(得分:1)
为什么不从上面的查询中创建一个DataTable?顺便说一下,部门名称应该是GROUP BY的一部分,或者更好的是具有聚合功能
MAX(d.DepartmentName) AS DeptName
编辑:
外连接是SQL查询的问题,而不是DataTables。
使用shorcut菜单中的数据库专家(数据库>数据库专家...)。在这里,选择当前连接(不是DataSet)并使用“Add Command”。这将打开一个SQL查询编辑器,您可以在其中输入上述查询。
答案 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);