【问题标题】:SQL Server : master records and display number of detail records for eachSQL Server:主记录并显示每个详细记录的数量
【发布时间】:2021-08-31 14:59:21
【问题描述】:

我有一个 MasterDetail 表,Detail 链接到 FK 引用上的 Master 行。

我需要显示Master表中的所有数据,以及每条记录对应的详细信息数量,即

MASTER表:

ID Name  Age
-------------
1  John  15
2  Jane  14 
3  Joe   15

DETAIL表:

MasterID Subjects
---------------------
1        Trigonometry
1        Chemistry
1        Physics
1        History
2        Trigonometry
2        Physics

因此,当我运行这条 SQL 语句时,我会得到以下结果:

ID   Name   Age  #Subjects
-----------------------------
1    John   15   Trignometry
1    John   15   Chemistry
1    John   15   Physics
1    John   15   History
2    Jane   14   Trignometry
2    Jane   14   Physics

这可能吗?有什么想法吗?

【问题讨论】:

  • 提示:INNER JOIN.
  • 不会增加记录
  • 。 . (1) 这就是你想要的。 (2) Jane/Physics 怎么了?
  • 顺便说一句,将年龄存储在数据库中似乎很愚蠢,因为它不断变化,最好存储 DOB 并计算它

标签: sql sql-server asp.net-mvc


【解决方案1】:

也许LEFT JOIN 就是您要找的东西

示例

 Select A.*
       ,B.Subjects
  From  Master A
  Left Join Detail B on A.ID=B.MasterID

结果

ID  Name    Age Subjects
1   John    15  Trigonometry
1   John    15  Chemistry
1   John    15  Physics
1   John    15  History
2   Jane    14  Trigonometry
2   Jane    14  Physics
3   Joe     15  NULL      -- <<<< Notice the NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多