需要查询以确定每个问题的附件数量

时间:2016-03-23 23:20:50

标签: sql-server tsql sql-server-2012 inner-join outer-join

我在SQL Server中有一个包含三个表的数据库:问题,附件和请求者。我需要一个单一的查询来返回"问题"中包含的所有列。和"附件"表。下面列出的是我创建的查询,但它没有按预期工作:

SELECT A.*, 
       B.*, 
       SubQuery.attachmentcount 
FROM   [DB].[dbo].[issues] AS A 
       FULL OUTER JOIN [DB].[dbo].[requestors] AS B 
                    ON A.issue_id = B.issue_id, 
       (SELECT Count(attachments.attachment_id) AS AttachmentCount 
        FROM   issues 
               LEFT OUTER JOIN attachments 
                            ON issues.issue_id = attachments.issue_id 
        WHERE  attachments.attachment_status = 1 
        GROUP  BY issues.issue_id) AS SubQuery; 

下面列出了描述这三个表的图片: Attachments Tbl enter image description here enter image description here

有关如何修复查询的任何想法?

谢谢,

2 个答案:

答案 0 :(得分:1)

"我需要一个单一的查询来返回"问题"中包含的所有列。和"附件"表&#34 ;. 根据这句话试试这个:

SELECT A.Issue_ID, I.Issue_Name,r.Name, COUNT(A.attachment_id) AS Count 
FROM Attachments as A 
INNER JOIN Issues I  on I.issue_id = A.issue_id 
INNER JOIN requestors as R on A.issue_id  = R.requestor_id
WHERE A.attachment_status = 1
GROUP BY A.Issue_ID, I.Issue_Name, r.Name
--Specify all columns by name (don't use *)

答案 1 :(得分:0)

保持简单,试试吧!

    SELECT i.Issue_ID, i.Issue_Name, COUNT(a.attachment_id) AS AttachmentCount 
    FROM attachments a JOIN
    issues i  ON 
    i.issue_id = a.issue_id 
    WHERE a.attachment_status = 1
    GROUP BY i.Issue_ID, i.Issue_Name

选择列表按条件分组中添加所需列,您已完成