2012-04-08 14 views
0

mein Hauptziel mit dieser Abfrage ist es, alle Abteilungen und Mitarbeiter unter einem Manager namens Mario Souza auszuwählen.Wie vereinfache ich diese Abfrage?

SELECT d.deptname,e.name FROM employee e JOIN department d ON e.dept = d.deptnum WHERE idmanager IN(
SELECT id FROM employee WHERE name = 'Mario Souza' 
) AND manager IN(
SELECT id FROM employee WHERE name = 'Mario Souza' 
) 

Und es funktioniert, aber ist es eine Möglichkeit, die erste in Folge speichern konnte, so konnte ich es verwenden, später nach dem AND-Operator?

+0

1) Ein Mitarbeiter kann also einen anderen Manager haben als den Manager der Abteilung, für die er arbeitet? 2) Wenn ein Mitarbeiter einen anderen Manager als Mario hat, aber an einer Abteilung arbeitet, deren Manager Mario ist, sollte er angezeigt werden? –

+0

Es ist eigentlich eine Übung und die Frage spezifiziert nicht, was Sie gerade gefragt haben, aber ich werde es nur in beide Richtungen lösen. Vielen Dank. –

Antwort

2

Sie können EXISTS verwenden, um nach mehreren Spalten zu suchen.

+0

Danke, es hat super geklappt und ich wusste nichts von der EXIST-Bedingung, also nochmals vielen Dank, dass du es gezeigt hast. –

1

Sie könnten ein JOIN mit Mitarbeiter Tabelle verwenden. Setzen Sie einfach sowohl den Manager als auch den ID-Manager in die ON-Klausel.

+0

Ihre Antwort funktionierte auch für diesen Fall und war einfacher. Vielen Dank. –