gpt4 book ai didi

sql - T-SQL 选择连接 3 个表

转载 作者:行者123 更新时间:2023-12-02 05:47:58 25 4
gpt4 key购买 nike

我目前正在 SQL Server 2012 上的 T-SQL 中进行选择查询。这是一个复杂的查询,我想从 3 个表中查询一个列表。结果应该是这样的:

所需输出:

ProjectId |    Title    | Manager   | Contact   | StatusId 
----------+-------------+-----------+-----------+-----------
1 | projectX | 1123 | 4453 | 1
2 | projectY | 2245 | 5567 | 1
3 | projectZ | 3335 | 8899 | 1

我的3张 table :
1) 项目:项目 ID、项目数据 ID、成员版本 ID
2) 项目数据:项目数据 ID、标题、状态 ID
3) 成员(member): MemberId、MemberVersionId、MemberTypeId、EmployeeId

棘手的部分是实现版本控制。因此,随着时间的推移,项目成员可以更改,并且应该始终可以返回到以前的版本,这就是我使用 MemberVersionId 作为项目和成员之间的外键的原因。表 Project 和 ProjectData 与 ProjectDataId 链接。

因此,1 个项目有 1 个 OfferData,1 个项目有 N 个成员。

一些示例数据:
项目
ProjectId | ProjectDataId | MemberVersionId | 
----------+---------------+-----------------+
1 | 2 | 1 |
2 | 3 | 1 |
3 | 4 | 1 |

项目数据
ProjectDataId |    Title    | StatusId 
--------------+-------------+-----------
2 | projectX | 1
3 | projectY | 1
4 | projectZ | 1

成员:MemberTypeId 1 = 经理,MemberTypeId 2 = 联系人,3 = 其他
MemberId | MemberVersionId | MemberTypeId | EmployeeId | 
---------+-----------------+--------------+------------+
1 | 1 | 1 | 1123 |
2 | 1 | 2 | 4453 |
3 | 1 | 3 | 9999 |
4 | 2 | 1 | 2245 |
5 | 2 | 2 | 5567 |
6 | 2 | 3 | 9999 |
7 | 3 | 1 | 3335 |
8 | 3 | 2 | 8899 |
9 | 3 | 3 | 9999 |

我当前的查询如下所示:
SELECT ProjectId, Title, EmployeeId AS Manager, EmployeeId AS Contact, StatusId
FROM [MySchema].[Project] a,
[MySchema].[ProjectData] b,
[MySchema].[Members] c
WHERE a.ProjectDataId = b.ProjectDataId
AND a.MemberVersionId = c.MemberVersionId

不幸的是,这还不起作用。你知道如何解决这个问题吗?

谢谢

最佳答案

像这样的东西?

SELECT 
p.ProjectId,
pd.Title,
mm.EmployeeId AS Manager,
mc.EmployeeId AS Contact,
pd.StatusId
FROM
[MySchema].[Project] p
INNER JOIN [MySchema].[ProjectData] pd ON pd.ProjectDataId = p.ProjectDataId
INNER JOIN [MySchema].[Members] mm ON mm.MemberVersionId = p.MemberVersionId AND mm.MemberTypeId = 1
INNER JOIN [MySchema].[Members] mc ON mc.MemberVersionId = p.MemberVersionId AND mc.MemberTypeId = 2;

关于sql - T-SQL 选择连接 3 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43538058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com