あなたが本当に望むものに依存します...複数の列を持つ1つの行、またはそれぞれの数を持つ複数の行。UNION ステートメントは、最初のクエリと同じレコード形式 (つまり、同じ数、列名、およびデータ型) で独自の結果セットを返す独自のクエリであると予想されるため、元のクエリは正しくありませんでした。カウントのみを使用せずにサンプリングするには、次のサンプル構文を使用してください。
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 ステートメントであることに注意してください。
さて、あなたに戻りましょう。(括弧)でラップされているために失敗したかどうか/理由はわかりませんが、次のように試行されます
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であるとします...元のエントリの1つだけが返され、カウントが正しくないことを知って頭を悩ませます。 .. 偶然にも 3 つのソースすべてのカウントが同じ 175 だった場合は、再試行してください...単一の 175 レコードのみが返され、予想よりもさらにずれます。