涉及家庭关系的艰难Sql查询问题

时间:2009-10-30 17:43:56

标签: tsql crystal-reports

我有多对多的表关系,涉及2个逻辑表。

记录连接到primaryID上的关系表的表 记录表的第二个实例,它连接到ReciprocalID上的关系表

这样做的目的是在数据库中显示家庭关系。每个主记录表在关系表中都有一行或多行,显示此人在数据库中具有的每个其他族关系。

我的任务是尝试制作一个联系人列表,其中包括显示每个上学的孩子的姓名以及他们的父母和联系信息。

我已经达到了能够向每个家长展示孩子的地步,但现在我必须找到一种方法将这些孩子合并在一起。

由于我无法控制此数据库(其教育边缘7)的设计,因此我创建了一个单独的数据库,用于保存我的报告的查询和视图。我正在做这项工作的学校只能访问CR 8.5。

现在我将CR中的顶级组作为recordstable的姓氏,我的第二组是recordstable的全名。我有一个子报告,可以输入所有子记录。

我在我的主视图(上面描述的那个)中使用了一个case语句来将'daughter'和'son'转换为child,将'mother'或'father'转换为parent。

希望这并没有太过漫无边际。如果您需要更多信息,请询问。

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.ID

TableViews实际上只是从主数据库中重新创建主表。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我的sql代码很好,这是格式化我的Crystal内部参数以及一些创意分组的问题。