SQL-Abfrage: Gib zu allen Mitarbeitern, den Namen ihres Vorgesetzen aus und den Abteilungsnamen, in denen sie arbeiten?
Tabelle EMP
Tabelle DEPT
Hier ist mein Lösungsansatz: SELECT ename, dname FROM EMP INNER JOIN dept ON dept.deptno = dept.deptno;
Ich bräuchte aber noch eine Spalte mit dem Namen des Vorgesetzten (Manager) also müsste ich mithilfe der Abteilungsnummer des Namens, den Manager ermitteln.
Das solte rauskommen:
3 Antworten
Nicht getestet, aber so sollte es gehen:
SELECT EMP.ENAME, DEPT.DNAME, MGR.ENAME
FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO = DEPT.DEPTNO
LEFT JOIN EMP AS MGR
ON EMP.MGR = MGR.EMPNO
Also die Tabelle EMP zweimal in die Abfrage aufnehmen. Einmal halt unter einem anderen Namen, damit du die Zahl aus der Spalte MGR mit der Zahl aus EMPNO matchen kannst.
Sorry aber meine Hilfreichigkeit kann nur darin bestehen, dass diese Benamung der Tabellen DB untauglich sind (Was sind die ID's Fremdschlüssel usw.).
An der Fragestellung erkennt man, dass es eine UNI Anfänger SQL Abfrage ist die dir zu schwer ist.
Lerne erst mal Constraints, Refereces und beschäftige Dich ausgiebig mit den Schlüsselworten GROUP BY und HEAVING.
Das kannst du gut sagen als SENIOR Programmierer ich hab eh schon selber herausgefunden wie das geht, man kann sich leider nicht auf die Leute hier verlassen. Im Untericht haben wir das nichtmal noch gemacht aber OK Boomer.
Du kannst einfach einen left join auf die EMP Tabelle machen. Als Schlüssel verwendest du die Departmentnumber und über eine where Bedingung definierst du, dass nur Einträge angezeigt werden, wo in der Spalte Job der gejointen EMP Tabelle "Manager" steht