2011-05-13 120 views
0

我想寫一個簡單的子查詢,在連接2個表後統計結果集中唯一的警報ID的數量。即使用Excel的Microsoft查詢子查詢

SELECT COUNT(DISTINCT ALARMTABLE.ID) FROM 
(SELECT ALARMTABLE.ID FROM ALARMTABLE) AS AA 
JOIN 
(SELECT ALARMDESCRIPTIONTABLE.DESCRIPTION FROM ALARMDESCRIPTIONTABLE) AS BB 
ON AA.ID=BB.ID 

這兩個表中有一個id列,與在其他的描述涉及在一個表中的ID。我的想法是可以得到每個鬧鐘的計數和描述。例如

AlarmDescription  Alarm COUNT 
----------------------------------- 
Fire Alm     1000 
Flood Alm    12 
Tornado Alm    75 

當我今天使用Microsoft查詢所有我得到的運行是錯誤無法添加表「(」。我到底做錯了什麼?

+0

派生表'BB'沒有一個'ID'列,以便無法連接到表'AA'上' AA.ID = BB.ID'。 – onedaywhen 2011-05-13 14:24:16

回答

0

首先,如果你的別名一個表,它必須通過別名被稱爲所以改變:

SELECT COUNT(DISTINCT ALARMTABLE.ID) FROM 

SELECT COUNT(DISTINCT AA.ID) FROM 

其次,你的錯誤可能是當MS闕ry試圖可視化SQL。你可以通過添加一個簡單的查詢並編輯它來解決這個問題。點擊屬性,然後選擇連接屬性,然後點擊定義選項卡。然後,您可以在命令文本字段中編輯查詢。

或者可能不那麼痛苦:您可以將查詢存儲在視圖中,並使用MS Query中的視圖。

1

您的SQL包含一些語法錯誤。

我想知道,如果你是後SQL中,可以看起來更象這樣:

SELECT BB.DESCRIPTION, COUNT(*) 
    FROM ALARMTABLE AS AA 
     INNER JOIN ALARMDESCRIPTIONTABLE AS BB 
      ON AA.ID = BB.ID 
GROUP 
    BY BB.DESCRIPTION;