sql - 如何计算一对多的关系

标签 sql sql-server-2008

ReporterTblAttachmentTbl 有一对多的关系.

ReporterTbl , 我有一个 ID (101) 并且我可以有 AttachmentTbl不止一个AttachmentReporterTbl.Id 相关

SELECT     
ISNULL(ReporterTbl.Id, 0) AS Id, 
CONVERT(char(10), ReporterTbl.StartDate, 101) AS StartDate, 
ISNULL(ReporterTbl.PriorityId, 0) AS PriorityId, 
ISNULL(dbo.ReporterTbl.PriorityDesc, '') AS PriorityDesc, 
 (select       
   ReporterTbl.Id, 
   COUNT(dbo.AttachmentTbl.Id) AS attachment_Id
FROM         
dbo.AttachmentTbl RIGHT OUTER JOIN
ReporterTbl ON dbo.AttachmentTbl.Id = ReporterTbl.Id
GROUP BY ReporterTbl.Id) AS IsAttachment
)

基本上,我想知道的是 ReporterTbl.ID ,多少Attachment我有吗?

表结构:
 ReporterTbl

    Id int   {**PrimaryKey**}
    StartDate datetime
    PriorityId int
    PriorityDesc varchar(500

    AttachmentTbl:

    AttachmentId indentity
    Id {**FK to ReproterTbl**}
    Filename
    Content
    ...

最佳答案

select r.id, count(a.id) as Count
from ReporterTbl r
left outer join AttachmentTbl a on r.id = a.id
group by r.id

关于sql - 如何计算一对多的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3679777/

相关文章:

mysql - 使用SQL计算时间序列中的时间间隔

mysql - 改进基本的 SQL 查询 - 分组结果

c# - 搜索功能无法正常使用

xml - 使用完整声明将 xml 插入数据库

sql - "Grant Connect on Endpoint as [sa]"有什么作用?

sql - 使用左连接的查询中的单个结果

MySQL查询涉及复杂的求和函数

sql - 每行或每条语句的 MERGE 语句唯一索引/约束验证?

sql - 如何对时间段进行分组并检查休息时间

sql-server-2008 - SQL Server 2008 - 过多的非规范化和过度索引 : What use is there for the Matrix?