Est-il possible de créer une sous-requête corrélée dans SELECT comme ceci?

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


Le ManagerID doit être égal et doit être le ManagerID de l'employé «12345».
Le but de la sous-requête est de récupérer le nom complet du responsable en fonction de son identifiant.

J'apprécie beaucoup votre réponse.
Je suis un novice.

Merci,
Rye.

-1
RyE 24 nov. 2017 à 06:36

3 réponses

Meilleure réponse

Oui. Pour simplifier votre écriture SQL, n'oubliez pas de toujours qualifier tous les noms de colonnes lorsque votre requête a plus d'une référence de table:

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';
1
Gordon Linoff 24 nov. 2017 à 03:49

J'ai obtenu les données en utilisant cette requête.

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';

Merci à tous ceux qui ont publié leur réponse.
Je ne l'aurais jamais résolu sans vous les gars.

Merci,
Seigle

0
RyE 24 nov. 2017 à 05:16

Essaye ça,

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
DineshDB 24 nov. 2017 à 03:40
47465991