2017-11-24 4 views
-1

Ist es möglich, eine korrelierte Unterabfrage in SELECT genau so zu erstellen?SQL-korrelierte Unterabfrage in Select

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


Die ManagerID sollten gleich sein und sollen die ManagerID von Mitarbeitern '12345' sein.
Der Zweck der Unterabfrage besteht darin, den vollständigen Namen des Managers basierend auf seiner ID abzurufen.

Ich schätze Ihre Antwort sehr.
Ich bin ein Neuling.

Danke,
Rye.

Antwort

1

Ja. Um Ihr SQL-Schreiben zu vereinfachen, denken Sie daran, immer alle Spaltennamen zu qualifizieren, wenn Ihre Abfrage mehr als eine Tabelle Bezug hat:

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

Danke für Ihre Antwort. Das ist eine einfachere, aber einfacher zu verstehende/fertige Abfrage – RyE

+0

Sollte ich DISTINCT Schlüsselwort vor m.EmployeeName hinzufügen? – RyE

+1

Nein - Wenn 'tblEmployee.EmployeeID' eine gültige eindeutige Integritätsbedingung besitzt, wird garantiert, dass die Unterabfrage maximal 1 Zeile zurückgibt. –

0

die Sie interessieren,

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

Vielen Dank für Ihre Antwort. Ich schätze es wirklich – RyE

0

ich die Daten bekam durch diese Abfrage verwenden.

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

Vielen Dank für alle, die ihre Antwort geschrieben haben.
Ich hätte es nie ohne euch gelöst.

Danke,
Rye

Verwandte Themen