2017-05-21 60 views
-1

下面給出的圖片上的標記查詢在SQL服務器中的SQL查詢是什麼?管理引擎表上的SQL查詢

找到所有的監事(直接和間接)鮑勃 enter image description here

+0

在你的問題中給出的信息是不夠的給你一個答案,因爲它沒有描述兩個ta之間的任何關係或者即使它們是表格或只是同一個表格的列。 –

+0

做一個遞歸的cte,本質上你union 2查詢supervisor = person的位置,並且你在第二個位置引用cte – Mihai

+0

它是唯一一個有兩列的表。 @LudvigRydahl –

回答

0
;WITH CTE AS (
SELECT Supervisor 
FROM t 
WHERE Person='Bob' 
UNION ALL 
SELECT tt.Supervisor 
FROM t tt 
INNER JOIN CTE ON CTE.Supervisor = tt.Person 
) 
SELECT * 
FROM CTE 

Test

+0

我有兩個錯誤:1)無效的列名Person和2)不明確的列名Supervisor。 –

0

試試這個:

DECLARE @T TABLE (Person NVARCHAR(30) , Supervisor NVARCHAR(30)); 
INSERT INTO @T VALUES 
('Bob','Alice'),('Mary','Susan'),('Alice','David'),('David','Mary'); 

select T.Supervisor 
from @T T 
Where T.Person = 'Bob' 
union all 
Select TT.Supervisor 
From @T TT inner join @T A 
on A.Supervisor = TT.Person 
+0

此查詢不適用於Bob以外的任何人。所有這一切都假設鮑勃不是任何人的主管,然後列出所有的主管。這是最好的方法嗎?不能找到更通用的解決方案嗎? – Krash