sql - 从 SQL Server 中具有两个链接表的表中提取多行
问题描述
我有一个表,我们称它为Case
case 表,其中包含有关案例的基本信息,例如CaseNumber
和CaseOwner
。
在第二个表中CasePersons
,保存了与特定案例编号相关的个人的详细信息。这包括PersonId
和FirstName
。链接到通过.LastName
CasePersons
Case
CaseNumber
在第三个表中,ContactDetails
存储了与特定人相关联的多个电话号码。其中的Type
列ContactDetails
代表电话号码的类型,例如家庭、手机或工作。ContactDetails
链接到CasePersons
通过PersonId
更清楚:
Case
------------------------
CaseNumber CaseOwner
1 Owner1
2 Owner2
3 Owner3
CasePersons
---------------------
PersonId CaseNumber FirstName LastName
1 1 Bob Person
2 1 Jim Human
3 2 Gary Man
4 3 Pete Smith
5 3 Matt Jones
CaseDetails
-------------------------
PersonId Detail Type
1 0123456789 1
1 1111111111 2
2 2222222222 1
1 0101001011 3
2 1234123412 2
3 0000011111 1
3 1231231231 2
我希望能够编写一个查询,该查询可以提取案件的基本细节,以及与案件相关的所有个人和所有相关的电话号码。
我将如何构造一个查询来提取这些信息?我似乎无法在 Google 上找到这方面的信息,因为我不确定要搜索什么。
这样做的重点是,我可以找到特定案例的所有相关号码并将它们存储在一个位置。
预期产出
CaseNumber CaseOwner Person1FirstName Person1LastName Person1HomeNumber Person1MobileNumber Person1WorkNumber Person2FirstName Person2LastName Person2HomeNumber Person2MobileNumber Person2WorkNumber
1 Owner1 Bob Person 0123456789 1111111111 0101001011 Jim Human 2222222222 1234123412
解决方案
如果您对一个案例的所有信息显示在多行中没有问题,您可以使用多个连接和 order by 将相关行放在一起。
select
Case.CaseNumber
,CaseOwner
,CasePersons.PersonID
,FirstName
,LastName
,Detail
,Type
from
Case
join CasePersons
on Case.CaseNumber=CasePersons.Casenumber
join CaseDetails
on CasePersons.PersonID=CaseDetails.PersonID
Order by
Case.CaseNumber
,CasePersons.PersonID
推荐阅读
- ffmpeg - 当输入视频是使用 AVComposition 连接的多个剪辑时,ffmpeg HLS 流音频不同步
- arrays - Groovy 语法是否授权多行列表/数组?
- reactjs - setInterval 和 React 功能组件
- javascript - 如何使用 HTML 输入在 JavaScript 中按键过滤字典/对象?
- r - 有没有办法读取 R 中的整个文件文件夹,然后导出为 1 个 excel 工作簿,每个文件输出为一张表?
- java - 读取文件时出错:线程“main”中的异常 java.util.NoSuchElementException:找不到行
- javascript - 根据另一个组件的状态更改 React 组件的可见性
- javascript - GainNode.gain.value 返回属性增益未定义?
- moving-average - 函数 iMA 正在返回与预期不同的返回值 (MQL5)
- language-agnostic - 处理从 0**1e-15 到 1e-15**1e-15 时出现的不连续性的优雅方式