取決於你真正想要的......一列有多列,或多列有各自的計數。原始查詢不正確,因爲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」,但是請注意這個聯盟是一個自己的選擇聲明
現在回到你的身邊了不知道是不是因爲被包裹而失敗(parens )或不,但窩ULD可以嘗試作爲
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,那麼再試一次......你只能得到單個的175記錄,並且比預期的更進一步。
我已經通過更改請求解決了這個問題,它現在是: 選擇(從機器選擇計數(*))作爲cntMachines,(從Factures選擇計數(*))作爲cntFactures,(從Consommation中選擇Count )作爲cntConsommation從[AnyTable] –