2017-09-26 2 views
1

Ich habe versucht, diese Frage zu lösen, indem ich die Unterabfrage in MySQL benutze, aber keine Lösung finden kann, da sie zeigt, dass Unterabfrage mehr als eine Zeile zurückgibt.mysql: Unterabfrage gibt mehr als 1 Zeilen zurück

Problemstellung: Zeigen Sie den emp-Namen mit ihren Gehältern und ihren Managern und Managern Gehalt.
Zeigen Sie nur die Mitarbeiter an, deren Manager nach ihnen eingestellt wurden.

select w.ename employee, w.SAL woSal, m.ename manager, m.SAL mSal 
from emp w, emp m 
where w.mgr = m.empno and 
(SELECT E1.ENAME 
FROM EMP E1, EMP E2 
WHERE E1.MGR=E2.EMPNO and (E1.hiredate<E2.hiredate)); 
+0

Es bedeutet einfach, dass Ihre Unter Abfrage Bedürfnisse mehr Bedingungen in der where-Klausel, so dass es eine Zeile zurückgibt. Für weitere Erläuterungen zögern Sie bitte nicht, mich erneut zu fragen –

+1

Was ist 'mgr' Spalte enthält. Bitte fügen Sie das Schema und Beispieldaten hinzu –

Antwort

2

Sie benötigen keine Unterabfrage müssen - nur die Bedingung auf der HireDate der Bedingung beitreten hinzuzufügen. Beachten Sie auch, dass implizite Verknüpfungen (mehr als eine Tabelle in der from-Klausel) gilt als veraltet, und Sie würden wahrscheinlich besser dran, es als eine explizite Umschreiben beitreten:

SELECT w.ename employee, w.SAL woSal, m.ename manager, m.SAL mSal 
FROM emp w 
JOIN emp m 
WHERE w.mgr = m.empno and w.hiredate < m.hiredate 
+0

- danke Jungs –

Verwandte Themen