gpt4 book ai didi

sql - T-SQL View 在一次检索中检索两个查找

转载 作者:行者123 更新时间:2023-12-02 08:43:16 24 4
gpt4 key购买 nike

我不是 SQL 专家,如果我的问题听起来很愚蠢,请原谅。

我有一个多查找表:

ID ProID AmID

ID 是一个标识列,并在插入时自动生成 ID。 ProID 和 AmID 链接到候选表,位于其中的 ID 列上。

我需要创建一个 View ,它将在单个 View 中返回 Firstname Lastname AS Pro 和 Firstname Lastname AS Am,以及来自 Candidate 表的 ID。

ID Pro            ProID Am            AmID
1 Name Surname 1 Name Surname 2
2 Name Surname 3 Name Surname 78
etc

我为 pro 和 am 候选人创建了两个单独的 select 语句,但不知道如何将它们合并为一个语句?

SELECT  T2.[ID], 
T2.[Firstname] + ' ' + T2.[Lastname] AS 'Pro'
FROM [Teams] AS T1
INNER JOIN [Candidate] AS T2
ON T1.ProID = T2.ID

SELECT T2.[ID],
T2.[Firstname] + ' ' + T2.[Lastname] AS 'Am'
FROM [Teams] AS T1
INNER JOIN [Candidate] AS T2
ON T1.AmID = T2.ID

我查了一下,似乎我需要对此进行 RIGHT JOIN,但它搞砸了结果。

这种情况是否可能,或者我是否必须接受对 SQL 的两次不同调用?

最佳答案

基本上,您需要将 Teams 表上的表 Candidate 加入两次,这样您就可以获得每一列的等效值。

SELECT  a.ID, b.ProID, c.AmID, 
b.FirstName + ' ' + b.LastName as ProName,
c.FirstName + ' ' + c.LastName as AmName
FROM Teams a
INNER JOIN candidate b
ON a.ProID = b.ID
INNER JOIN candidate c
ON a.AmID = c.ID

如果其中一列是可空LEFT JOININNER JOIN 更需要,因此不匹配的值仍会出现在列表中结果。

要全面了解联接,请访问以下链接:

创建VIEW

CREATE VIEW viewName
AS
SELECT a.ID, b.ProID, c.AmID,
b.FirstName + ' ' + b.LastName as ProName,
c.FirstName + ' ' + c.LastName as AmName
FROM Teams a
INNER JOIN candidate b
ON a.ProID = b.ID
INNER JOIN candidate c
ON a.AmID = c.ID

关于sql - T-SQL View 在一次检索中检索两个查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14620947/

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