无法弄清楚如何将程序指标放在MS Access中

时间:2013-09-06 16:27:19

标签: sql ms-access

所以我觉得我做得很好。我做了5张桌子。 tblComplexity,tblCoupling,tblLinesOfCode,tblMaintainIndex和tblProjects

tblProjects有2列[ID,项目名称]

其他4个表都有3列第3列是每个列不同的列,正如您根据名称猜测的那样

其他4个表[ID *,RunID,(复杂性,耦合,行,MI)]

其他4个表中只有数字

我为tblProjects.ID和(4tables).RunID在4个表中的每个表上放了多对一的关系。

然后我对qfComplexity

进行了查询
SELECT
   tblProjects.ProjectName,
   Round(Avg(tblComplexity.CyclomaticComplexity)+StDevP(tblComplexity.CyclomaticComplexity),2) AS MaxDeviation,
   Max(tblComplexity.CyclomaticComplexity) AS MaxOfCyclomaticComplexity,
   Min(tblComplexity.CyclomaticComplexity) AS MinOfCyclomaticComplexity,
   Round(Avg(tblComplexity.CyclomaticComplexity)-StDevP(tblComplexity.CyclomaticComplexity),2) AS MinDeviation  
FROM
   tblProjects 
INNER JOIN
   tblComplexity 
      ON tblProjects.ID = tblComplexity.RunID
GROUP BY
   tblProjects.ProjectName;

所有这4个查询都给了我之后的数字(我以前在一张excel表中都有这个。)

我最终的目标是将此数据库与excel连接,以便我可以拥有我的图表。问题是这就是我的Excel工作表的样子(其中一个标签)

From Excel Maintainability Index               
            Lines   MaxDev  Max     Min     MinDev
Project1    332.00  94.83   100.00  70.00   72.64
Project2    2019.00 76.03   81.00   53.00   51.30
Project3    3052.00 87.37   100.00  42.00   62.57
Project4    576.00  94.88   100.00  69.00   77.25
Project5    1074.00 95.20   100.00  62.00   69.60
Project6    163.00  92.84   100.00  61.00   72.70
Project7    187.00  87.26   96.00   68.00   72.07
Project8    18.00   92.47   92.00   78.00   81.81
Project9    89.00   99.94   100.00  57.00   69.26
Project10   127.00  103.45  100.00  65.00   81.33

这就是我的查询返回的内容

From Access qryMaintiain
            MaxDev  Max     Min     MinDev
Project1    94.83   100.00  70.00   72.64
Project2    76.03   81.00   53.00   51.30
Project3    87.37   100.00  42.00   62.57
Project4    94.88   100.00  69.00   77.25
Project5    95.20   100.00  62.00   69.60
Project6    92.84   100.00  61.00   72.70
Project7    87.26   96.00   68.00   72.07
Project8    92.47   92.00   78.00   81.81
Project9    99.94   100.00  57.00   69.26
Project10   103.45  100.00  65.00   81.33

所以我试着添加我的线条总和......我得到一些疯狂的数字。那么如何在我的每个查询中获取代码行?哦,我想我应该提出我的qryLinesOfCode

SELECT
   tblProjects.ProjectName,
   Sum(tblLinesOfCode.LinesOfCode) AS LinesOfCode  
FROM
   tblProjects 
INNER JOIN
   tblLinesOfCode 
      ON tblProjects.ID = tblLinesOfCode.RunID  
GROUP BY
   tblProjects.ProjectName;

我认为直接向我的3个查询中添加另一个内连接(是3 ..第4个是代码行,但我的excel表只有3个选项卡)..所以我试过这个

SELECT
   tblProjects.ProjectName,
   Sum(tblLinesOfCode.LinesOfCode) AS LinesOfCode  
   Round(Avg(tblComplexity.CyclomaticComplexity)+StDevP(tblComplexity.CyclomaticComplexity),2) AS MaxDeviation,
   Max(tblComplexity.CyclomaticComplexity) AS MaxOfCyclomaticComplexity,
   Min(tblComplexity.CyclomaticComplexity) AS MinOfCyclomaticComplexity,
   Round(Avg(tblComplexity.CyclomaticComplexity)-StDevP(tblComplexity.CyclomaticComplexity),2) AS MinDeviation  
FROM
   ((tblProjects 
INNER JOIN
   tblComplexity 
      ON tblProjects.ID = tblComplexity.RunID)
INNER JOIN
   tblLinesOfCode 
      ON tblProjects.ID = tblLinesOfCode.RunID)  
GROUP BY
   tblProjects.ProjectName;

但我得到了这个

ProjectName  Lines   MaxDev  Max  Min  MinDev
Project1    6057    94.83   100  70   72.64
Project2    5049    76.03   81   53   51.3  
Project3    201432  87.37   100  42   62.57
Project4    18432   94.88   100  69   77.25
Project5    32220   95.20   100  62   69.6
Project6    126     92.84   100  61   72.7
Project7    445     87.26   96   68   72.07
Project8    4980    92.47   92   78   81.81
Project9    12065   99.94   100  57   69.26
Project10   4238    103.45  100  65   81.33

有人可以帮帮我吗?谢谢

PS。我正在使用Access / Excel 2010

1 个答案:

答案 0 :(得分:0)

呃......最终想通了。我不应该试图重新计算总和。相反,我使用了查询

SELECT
   tblProjects.ProjectName,
   qryLinesOfCode.LinesOfCode AS LinesOfCode,
   Round(Avg(tblComplexity.CyclomaticComplexity)+StDevP(tblComplexity.CyclomaticComplexity),2) AS MaxDeviation,
   Max(tblComplexity.CyclomaticComplexity) AS MaxOfCyclomaticComplexity,
   Min(tblComplexity.CyclomaticComplexity) AS MinOfCyclomaticComplexity,
   Round(Avg(tblComplexity.CyclomaticComplexity)-StDevP(tblComplexity.CyclomaticComplexity),2) AS MinDeviation  
FROM
   (tblProjects 
INNER JOIN
   tblComplexity 
      ON tblProjects.ID = tblComplexity.RunID
   ) 
INNER JOIN
qryLinesOfCode 
   ON tblProjects.ProjectName = qryLinesOfCode.ProjectName
GROUP BY
tblProjects.ProjectName,
LinesOfCode;