2017-11-24 14 views
-1

SELECTで相関サブクエリを作成することはできますか?SELECT内のSQL相関サブクエリー

SELECT EmployeeID, 
EmployeeName, 
ManagerID, 
    (SELECT EmployeeName FROM tblEmployee WHERE EmployeeID = ManagerID) 
FROM tblEmployee 
WHERE EmployeeID = '12345'; 


マネージャーIDは同じであるべきであり、従業員「12345」のマネージャーIDであるべきです。
サブクエリの目的は、IDに基づいてマネージャのフルネームを取得することです。

ご回答いただきありがとうございます。
私は初心者です。

ありがとう、
ライム。

答えて

1

、これを試してみてください。 SQL文を簡略化するために、クエリに複数のテーブル参照がある場合、常にすべての列名を修飾することを忘れないようにしてください:

SELECT e.EmployeeID, e.EmployeeName, e.ManagerID, 
     (SELECT m.EmployeeName 
     FROM tblEmployee m 
     WHERE m.EmployeeID = e.ManagerID 
     ) 
FROM tblEmployee e 
WHERE e.EmployeeID = '12345'; 
+0

あなたの返事をありがとう。より簡単でわかりやすく、簡単なクエリ – RyE

+0

m.EmployeeNameの前にDISTINCTキーワードを追加する必要がありますか? – RyE

+1

いいえ - 'tblEmployee.EmployeeID'に有効なユニーク制約がある場合、サブクエリは最大1行を返すことが保証されます。 –

0

はい

DECLARE @tblEmployee TABLE(EmployeeID INT,EmployeeName VARCHAR(100),ManagerID INT) 
INSERT INTO @tblEmployee VALUES(1,'Arun',2) 
INSERT INTO @tblEmployee VALUES(2,'Dinesh',NULL) 


SELECT EmployeeID, 
EmployeeName, 
ManagerID, 
    (SELECT M.EmployeeName FROM @tblEmployee M WHERE T1.ManagerID = M.EmployeeID)ManagerName 
FROM @tblEmployee T1 
WHERE EmployeeID = 1; 
+0

お返事ありがとうございます。本当にありがたいです – RyE

0

このクエリを使用してデータを取得しました。

SELECT e.EmployeeID, e.EmployeeName, e.ManagerID, m.EmployeeName as ManagerName 
FROM tblEmployee e 
JOIN tblEmployee m 
ON e.ManagerID = m.EmployeeID 
WHERE e.EmployeeID = '12345'; 

回答を投稿していただきありがとうございます。
あなたがいなくても決してそれを解決できませんでした。

ありがとう、
ライム

関連する問題