Übungsblatt 7, SQL Anfrage

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Übungsblatt 7, SQL Anfrage
Hallo,
Ich verstehe die Musterlösung bei dieser Aufgabe nicht.
Anhand der Aufgabenstellung sollen wir zu jedem Mitarbeiter den Namen und Vornamen des Leiters der zugehörigen Abteilung (Ist_Leiter = ‘J’) suchen. Aber in der Lösung wird ebenfalls die Bedingung Ist_Leiter = ‘N’ aufgelistet… Wieso?
Wäre super wenn mir jemand dabei helfen kann.

1.4 Anfrageformulierung
Nr. 15

Suchen Sie zu jedem Mitarbeiter den Namen und Vornamen des Leiters der zugehörigen Abteilung (Ist_Leiter = ’J’). Die Abteilungsleiter in unserer einfachen Firmenhierarchie haben keinen Vorgesetzten; sie sollen in der Liste deshalb nicht aufgeführt werden.

SELECT mi1.Abteilung_ID as Abt, mi1.Name, mi1.Vorname, mi2.Name as LtrName, mi2.Vorname as LtrVorn
FROM Mitarbeiter mi1
JOIN Abteilung ab on mi1.Abteilung_ID = ab.ID
JOIN Mitarbeiter mi2 on mi2.Abteilung_ID = ab.ID
WHERE mi2.Ist_Leiter = ‘J’ AND mi1.Ist_Leiter = ‘N’

Attachment:
UeKonzMod_SQL_Aufgabensammlung_Loesungsvorschlaege.pdf: https://fsi.cs.fau.de/unb-attachments/post_152155/UeKonzMod_SQL_Aufgabensammlung_Loesungsvorschlaege.pdf


Hallo MC,

unsere Ergebnisrelation soll Informationen zu allen “normalen” Mitarbeitern + dem zugehörigen Chef enthalten.

Da aber in unserer Tabelle alle gemeinsam enthalten sind, müssen wir erst einmal herausfiltern wer Chef und wer ein normaler Angestellter ist.

SELECT * FROM Mitarbeiter WHERE Ist_Leiter = 'N' ^ so bekommen wir die “normalen” Mitarbeiter

SELECT * FROM Mitarbeiter WHERE Ist_Leiter = 'J' ^ so bekommen wir alle Chefs (die keine weiteren Chefs mehr haben, da flache Hierarchie)

In dem Lösungsvorschlag sollen mi2 die Chefs und mi1 die normalen Mitarbeiter sein.
Diese beiden Tabellen werden zusammen gejoint.

Was wäre passiert wenn wir mi1 nicht nach Ist_Leiter = ‘N’ gefiltert hätten? Das kannst du ja bei Dir mal ausprobieren. Das Ergebnis sollte ungefähr so aussehen:

Mitarbeiter1   |    Chef1
Mitarbeiter2   |    Chef1
Chef1          |    Chef1
Mitarbeiter3   |    Chef2
Chef2          |    Chef2

Chef1 wird nun sein eigener Chef. Also jeder Chef wird immer noch einmal mit sich selbst angezeigt. Selbstverständlich kann man das auch anders beheben/lösen.

Hoffe ich konnte Dir die Anfrage etwas klarer machen.

Gruß
tenma.

Disclaimer: Gemeint ist mit Mitarbeiter / Chef immer die auch die weibliche Form.


Hallo Tenma,
Vielen Dank für deine Hilfe, habe es jetzt verstanden! :slight_smile: