【问题标题】:Trouble finding a simple SQL Join Solution找不到简单的 SQL 连接解决方​​案
【发布时间】:2013-11-12 06:29:35
【问题描述】:

我尽我所能,但找不到同样的问题。

我正在使用以下 SQL 来尝试生成我正在寻找的结果。 我正在尝试完成一个连接或其他功能,该功能将允许我从左侧计算或选择右侧具有匹配行的行。如果右侧有匹配的列,我只希望它被计算一次。 我正在查看是否至少有一个匹配项(即使它们更多也算作 1 个)以进行计数。

这就是我想要做的。

左侧 年度捕获 (ID)

1 一些数据

2 一些数据

3 一些数据

右侧(年度评论)

年度捕获 id 2 的 2 条评论

2 年度捕获 id 2 的另一条评论

结果: 从选择中它只会返回 2 的 Annual_Capture (ID)。 从计数来看,它只会返回 Annual_Capture (ID 2) 上的记录

在我的情况下,我一直数到 2 而不是 1。

这是我正在使用的 SQL:

计数

 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

任何帮助将不胜感激!

【问题讨论】:

    标签: sql tsql sql-server-2005 join


    【解决方案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
    ;
    

    【讨论】:

    • 谢谢,太棒了!非常适合计数!现在我必须弄清楚如何让 select 语句以及上面列出的 SELECT 部分工作,以列出Annual_Capture 中具有一条或多条评论(一次)的实际完整记录。谢谢!
    【解决方案2】:

    这仅返回来自 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;
    

    【讨论】:

    • 谢谢,我在 SQL Server 2005 中尝试过,它不喜欢Annual_Comments。*。它在*附近一直说错误
    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2010-09-05
    • 2022-01-24
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多