我正在尝试使用join连接MS Access中的多个表来获取计数值。但我不知道它给出错误的计数值。如果我尝试单独加入它们,那么它会给我正确的计数值。
我有3张桌子。表2和表3是独立的并且连接到表1.测试2和测试3基本上是文本值,我想计算行。
表1(ID1(主键),名称) 表2(ID2(主键),ID1(外键),Test2) 表3(ID3(Orimary Key),ID1(外键),Test3)
我从MS Access获得的查询如下:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
但是这给了我错误的计数值。 有人可以帮助我。
感谢。
答案 0 :(得分:0)
如果我可以假设test2和测试3对每条记录都是唯一的(或许最好算上PK?)
SELECT Table1.ID1
, Count(distinct Table2.Test2) AS CountOfTest2
, Count(distinct Table3.Test3) AS CountOfTest3
FROM Table1
INNER JOIN Table2
ON Table1.ID1 = Table2.ID2
INNER JOIN Table3
ON Table1.ID1 = Table3.ID3
GROUP BY Table1.ID1;
或者,您可能必须在连接之前获取计数,但使用内联视图。如果MSSQL SERVER但Access需要内联视图,则可以使用窗口函数。
SELECT A.ID1
, B.CountOfTest2
, C.CountOfTest3
FROM Table1 A
INNER JOIN (SELECT Table2.ID2, count(table2.test) as CountOfTest2
FROM Table2
GROUP BY Table2.id) B
ON Table1.ID1 = B.ID2
INNER JOIN (SELECT Table3.id, count(table3.test3) as CountOfTest3
FROM Table3
GROUP BY Table3.id) C
ON B.ID1 = C.ID3
GROUP BY A.ID1;
答案 1 :(得分:0)
当我单独使用它时,它会给我正确的计数值:
SELECT Table1。 ID1,Count(Table2.Test2)AS CountOfTest2 FROM Table1 INNER JOIN Table2 ON Table1.ID1 = Table2.ID1 GROUP BY Table1.ID1;
SELECT Table1。 ID1,Count(Table3.Test3)AS CountOfTest3 FROM Table1 INNER JOIN Table3 ON Table1.ID1 = Table3.ID1 GROUP BY Table1.ID1;
但是当我尝试在MS Acces中加入Table1,Table2和Table 3时,它给出了不正确的计数值。
SELECT Table1。 ID1,Count(Table2.Test2)AS CountOfTest2,Count(Table3.Test3)AS CountOfTest3 FROM(Table1 INNER JOIN Table2 ON Table1.ID1 = Table2.ID1)INNER JOIN Table3 ON Table1。 ID1 = Table3.ID1 GROUP BY Table1.ID1
根据我的理解,它在括号中取第一个查询的计数值,并将其与另一个内连接的计数值相乘。
我尝试过很多东西,但不知道该怎么做。 Access出于某种原因添加括号。
答案 2 :(得分:0)