Join上的语法错误但查询中没有Join

时间:2013-01-17 14:56:18

标签: ms-access join count syntax-error union

我正在请求获取3个不同表中的行数。

所以我在3个简单请求之间使用了一个Union来计算每个表中的行数。

但是我收到错误:“加入操作中的语法错误”

即使我没有加入我的查询...

任何人都可以帮我这个吗?

这是请求:

Select Sum(asd) as 'totalRows' 
FROM ((Select Count(*) as 'asd' from Machines) 
Union (Select Count(*) as 'asd' from Factures) 
Union (Select Count(*) as 'asd'  From Consommation)) 
 as 'tab1'

2 个答案:

答案 0 :(得分:1)

取决于你真正想要的......一行有多列,或多行有各自的计数。您的原始查询不正确,因为UNION语句应该是其OWN查询,以与第一个查询相同的记录格式返回其自己的结果集(即:相同的数字,列名和数据类型。要仅使用计数进行抽样,采用以下示例语法。

select
      a.NumberField1,
      a.CharField1,
      a.DateField1
   from
      SomeTable a
   where
      a.SomeCondition = 1
UNION
      b.SomeField AS NumberField1,
      b.AnotherField AS CharField1,
      c.SomeDate AS DateField1
   from
      AnotherTable b
   where
      b.TestCondition = 6

上面将返回“SomeTable”中包含条件的所有行,并根据条件包含“AnotherTable”中的行。如果有任何重复,则删除副本...除非您执行了“UNION ALL”。但请注意,union是一个独立的select语句。

现在,回到你的身边。不确定是否/为什么因为被包裹在(parens)而失败但是会被视为

Select 
      Sum(asd) as 'totalRows' 
   FROM 
   (   Select Count(*) as 'asd' 
          from Machines
       UNION ALL
       Select Count(*) as 'asd' 
          from Factures
       UNION ALL
       Select Count(*) as 'asd'  
          From Consommation ) as 'tab1'

我将改为联盟,因为...说你的机器数和来自Factures的数量是175 ...只有一个原始条目会被退回,你会想知道计数是不对......如果巧合的是,所有3个来源的数量都相同,那么请再试一次......你只能获得单个175记录,并且比预期更远。

答案 1 :(得分:0)

我已经通过更改请求解决了这个问题,现在是:

Select (Select Count() from Machines) as cntMachines, 
    (Select Count() From Factures) as cntFactures, 
    (Select Count(*) from Consommation) as cntConsommation 
From [Machines Or any other table]

这不是我的问题的答案,但这是一个循环。

真正的答案仍然会受到赞赏。 :)