无法找到简单的SQL Join解决方案

时间:2013-11-01 03:22:19

标签: sql tsql sql-server-2005 join

我抬头看看我能做什么,却找不到同样的问题。

我正在使用以下SQL来尝试生成我正在寻找的结果。 我正在尝试完成一个连接或另一个函数,它允许我从左侧计数或选择右侧有匹配行的行。如果右侧有匹配的列,我只想计算一次。 我希望看看是否至少有一场比赛(并计算为1,即使它们更多)也可以计算。

这就是我想要做的。

左侧 Annual_Capture(ID)

1一些数据

2一些数据

3一些数据

右侧(年度评论)

2年度捕获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

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分: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
;

答案 1 :(得分: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;