我有一个多对多的表关系,涉及2个逻辑表。
连接到primaryID上的关系表的记录表连接到ReciprocalID上的关系表的记录表的第二个实例
这样做的目的是显示数据库中的家庭关系。每个主记录表在关系表中都有一个或多个行,该关系表显示了此人在数据库中的所有其他家庭关系。
我的任务是尝试制作一份联系人列表,其中包括显示该学校每个孩子的姓名以及他们的父母和联系方式。
我已经能够显示每个父对象下的子对象了,但现在我必须找到一种方法将它们合并在一起。
因为我无法控制这个数据库(它的Education Edge7)的设计,所以我创建了一个单独的数据库来保存我的报告的查询和视图。我做这项工作的学校只能访问CR8.5。
现在,我在CR中的顶级组是记录表的姓氏,第二个组是记录表的全名。我有一个子报表,其中包含所有的子记录。
我在我的主要视图(如上所述)中使用了case when语句,将“女儿”和“儿子”转换为孩子,将“母亲”或“父亲”转换为父母。
希望这篇文章没有太多的杂乱。如果你需要更多的信息,尽管问。
SELECT dbo.vwEA7RelationshipsTableView.PRIMARYID,
dbo.vwEA7RecordsTableView.LASTNAME AS PRIMARYLASTNAME,
dbo.vwEA7RecordsTableView.FIRSTNAME AS PRIMARYFIRSTNAME,
dbo.vwEA7RecordsTableView.NAMEFORDISPLAY AS PRIMARYNAME,
CASE dbo.vwEA7RelationshipsTableView.PRIMARYDESC
WHEN 'Father' THEN 'Parent'
WHEN 'Mother' THEN 'Parent'
WHEN 'Son' THEN 'Child'
WHEN'Daughter' THEN 'Child'
ELSE dbo.vwEA7RelationshipsTableView.PRIMARYDESC
END AS PRIMARYDESC,
dbo.vwEA7RelationshipsTableView.RELATIONID,
vwEA7RecordsTableView_1.LASTNAME AS RELATIONLASTNAME,
vwEA7RecordsTableView_1.NAMEFORDISPLAY AS RELATIONNAME,
dbo.vwEA7RelationshipsTableView.RELATIONDESC
FROM dbo.vwEA7RelationshipsTableView INNER JOIN
dbo.vwEA7RecordsTableView ON
dbo.vwEA7RelationshipsTableView.PRIMARYID = dbo.vwEA7RecordsTableView.ID INNER JOIN
dbo.vwEA7RecordsTableView AS vwEA7RecordsTableView_1 ON
dbo.vwEA7RelationshipsTableView.RELATIONID = vwEA7RecordsTableView_1.IDTableViews实际上只是从主数据库重新创建主表。
发布于 2009-10-31 04:10:01
我已经解决了这个问题。我的sql代码很好,它只是格式化了Crystal的内部参数以及一些创造性的分组。
https://stackoverflow.com/questions/1651318
复制相似问题