2013-01-17 27 views
0

我正在做一個請求,以獲取3個不同表中的行數。加入語法錯誤,但沒有查詢加入

因此,我使用3個簡單請求之間的聯合來計算每個表中的行數。

但我得到一個錯誤:「語法錯誤在加入操作」

即使壽無我有,我的查詢中加入...

任何一個能幫助我嗎?

而這裏的要求:

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' 
+0

我已經通過更改請求解決了這個問題,它現在是: 選擇(從機器選擇計數(*))作爲cntMachines,(從Factures選擇計數(*))作爲cntFactures,(從Consommation中選擇Count )作爲cntConsommation從[AnyTable] –

回答

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] 

這不是回答我的問題,但它是一個步行約。

真正的答案仍然值得讚賞。 :)

+0

我只是回答我的答案,而不是DRapp的一個,因爲我的解決方案不像DRapp的那個bug。 –

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」,但是請注意這個聯盟是一個自己的選擇聲明

現在回到你的身邊了不知道是不是因爲被包裹而失敗(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記錄,並且比預期的更進一步。

+0

大聲笑,「請求太複雜了」錯誤xD而我真正想要的是1字段,1行是3個不同表格之間的總數。所以,據我瞭解,你的第一個建議不會給我我想要的。然而,你的第二個建議似乎沒問題,除了「太複雜」的東西>。... ... 謝謝。 –