尝试创建具有多个外部联接的单个报告

时间:2018-06-19 13:33:09

标签: ms-access report

我是Access的新手,除了一些基本语法外,几乎没有编码知识。我所知道的全部来自我在互联网上可以找到的东西。

我正在尝试根据学者的出版物,资助和学生人数创建一份有关学者表现的报告。我可以单独创建所有3个报告,但我被要求将所有3个报告合并为一个报告。该报告必须包括所有学者,无论他们是否有出版物,赠款或学生,并且必须以每种学者为基础将其分组的方式来生成该报告。我的解释不太好,但是看起来应该像这样:

学术1

  • 出版物
  • 赠款
  • 学生

学术2

  • 出版物
  • 赠款
  • 学生

这种关系是这样的(如果解释不好,很抱歉):

[学术] 1-M [监督] M-1 [学生]

[学术] 1-M [已发布] M-1 [出版物]

[学术] 1-M [资金] M-1 [赠予]

关系的“ 1”侧的表具有一个主键,该主键由之间的表链接在一起。学术界拥有不止一个奖学金,出版物和学生,而且这份报告应该持续数年。

我曾尝试根据学术版进行分组并将子报表放在同一组中。可悲的是,每个子报表都有相同记录的多个记录(例如,同一发布将重复多次),无论查询记录本身是不同的还是我是否已根据发布对其进行了分组等等。

1 个答案:

答案 0 :(得分:0)

以下是获取报告计数的一种方法-假设您想要计数或总和或某种组合:

创建三个查询(也许就像您已经拥有的),每个查询将把“ Academics”加入关系表之一(监督,发布,资助)。进行这些“总计”查询,在其中将“学术”中的唯一字段“分组”,并在另一个表中“计数”某些字段。即我将其命名为Q1,Q2,Q3

  SELECT Academics.AName, Count(Supervision.AName) AS Students
      FROM Academics 
      INNER JOIN Supervision ON Academics.AName = Supervision.AName
      GROUP BY Academics.AName;

创建要在报表中使用的第四个查询,该查询将“ Academics”和Q1,Q2,Q3连接起来,如下所示:

SELECT Academics.AName, Sum(Q1.Students) AS Students, Sum(Q2.Publications) AS Pubs, 
Sum(Q3.Funding) AS Funds
    FROM ((Academics 
    LEFT JOIN Q1 ON Academics.AName = Q1.AName)
    LEFT JOIN Q2 ON Academics.AName = Q2.AName) 
    LEFT JOIN Q3 ON Academics.AName = Q3.AName
    GROUP BY Academics.AName;

这将返回所有学者-即使没有学生,资金或酒吧。您可以将过滤器设置为仅在具有相关记录的情况下才包括学术人员。