2013-11-01 50 views
0

我擡頭看看我能做什麼,但找不到同樣的問題。找到一個簡單的SQL加入解決方案時遇到問題

我正在使用以下SQL來嘗試生成我正在尋找的結果。 我想完成一個連接或另一個函數,它將允許我從左側計算或選擇右側具有匹配行的行。如果右側有一個匹配的列,我只希望它被計算一次。 我在查看是否至少有一個匹配(並將其計爲1,即使它們更多),以便對其進行計數。

這就是我想要做的。

左側 Annual_Capture(ID)

1的一些數據

2一些數據

3某些數據

右側(年度評論)

2評價爲年度Capture id 2

2另一個評論的年度採集ID 2

結果: 從選擇它只會返回2. Annual_Capture(ID)從計數,這將在Annual_Capture只返回該記錄(ID 2)

在我的情況下,我一直得到2而不是1。

這裏是我使用的SQL:

COUNT

SELECT COUNT(*) FROM Annual_Capture 
JOIN Annual_Comments 
ON Annual_Capture.id = Annual_Comments.Record_id 
where Main_AbstractNumber = 133 and Year = 2012 ; 

選擇

SELECT * FROM Annual_Capture INNER JOIN Annual_Comments 
ON Annual_Capture.id = Annual_Comments.Record_id WHERE Main_AbstractNumber = 133 
AND Year = 2012 

任何幫助,將不勝感激!

回答

1
select 
    count(distinct Annual_Capture.id) 
from 
    Annual_Capture 

    inner join Annual_Comments 
     on Annual_Capture.id = Annual_Comments.Record_id 
where 
      Main_AbstractNumber = 133 
    and Year    = 2012 
; 
+0

謝謝你,那真棒!爲伯爵工作完美!現在我必須弄清楚如何讓select語句也可以用於上面列出的SELECT部分​​,以便列出Annual_Capture中包含一條評論或更多(一次)的實際完整記錄。謝謝! –

0

這隻能從Annual_Capture其中至少有一個評論返回行(這是我看了你的rqmts):

SELECT Annual_Capture.id, count(Annual_Comments.*) 
FROM Annual_Capture JOIN Annual_Comments ON Annual_Capture.id = Annual_Comments.Record_id 
WHERE Main_AbstractNumber = 133 and Year = 2012 
GROUP BY Annual_Capture.id 
HAVING Count(Annual_Comments.*) >= 1; 
+0

謝謝,我試過在SQL Server 2005中,它不喜歡Annual_Comments。*。它一直在附近說錯誤* –

相關問題