Hmmm, ich muss mich mal outen: Sind die Joins ebenfalls in der Unterabfrage notwendig? Sicherlich schon, oder?
Also sollte der gute Mann Heinz mit Vornamen heißen, dann schlag ich mal folgendes vor:
SELECT PersNR, VName, NName, ProjNr, TelefonNr, Gehalt FROM Abteilung, Akte, Personal, Projekt WHERE Abteilung.AbtNr = Projekt.AbtNr AND Projekt.ProjNr = Personal.ProjNr AND Personal.PersNr = Akte.PersNr AND ChefNr = (SELECT ChefNr FROM Abteilung, Akte, Personal, Projekt WHERE Abteilung.AbtNr = Projekt.AbtNr AND Projekt.ProjNr = Personal.ProjNr AND Personal.PersNr = Akte.PersNr AND VName = 'Heinz');
Ok, das habe ich tatsächlich extra gemacht, damit man die Befehle noch etwas deutlicher dazwischen sieht :-) Ich lasse übrigens auch gerne andere versuchen... :)
Mensch Leute, seid doch nicht so passiv! Seit ich die Klsungsvorschläge online habe, habe ich mehr Besucher denn je auf meinem Blog...und nur einer schreibt auch was dazu?
Noch ein Tipp für die SQL-Aufgabe: Selfjoin.
@Flo: Du musst in der Select-Anweisung die Attribute qualifizieren.
SELECT Akte.PERSNR, Personal.VNAME, Personal.NNAME, Personal.PROJNR, Personal.TELEFONNR, Personal.GEHALT FROM Abteilung, Akte, Personal, Projekt WHERE Abteilung.Budget = Projekt.Budget AND Akte.PersNr = Personal.PersNr AND Akte.Gehalt = Personal.Gehalt AND Personal.ProjNr = Projekt.ProjNr AND Abteilung.AbtNr = Projekt.AbtNr AND Personal.VNAME =‘‘HEINZ‘‘ AND Akte.Position = ‘’Abteilungsleiter’’;
Hi, mit dem Hinweis, dass es auch kürzer gehen müsste...
SELECT persnr, vname, nname, projnr, telefonnr, gehalt FROM Personal, Abteilung WHERE projnr IN ( SELECT projnr FROM Personal WHERE vname='Heinz') AND Personal.Persnr = Abteilung.chefnr
WÜrd mich interessieren, ob ich die Tabellen richtig interpretiert hab. Danke! lg
Hmmm, ich muss mich mal outen: Sind die Joins ebenfalls in der Unterabfrage notwendig? Sicherlich schon, oder?
AntwortenLöschenAlso sollte der gute Mann Heinz mit Vornamen heißen, dann schlag ich mal folgendes vor:
SELECT PersNR, VName, NName, ProjNr, TelefonNr, Gehalt
FROM Abteilung, Akte, Personal, Projekt
WHERE Abteilung.AbtNr = Projekt.AbtNr
AND Projekt.ProjNr = Personal.ProjNr
AND Personal.PersNr = Akte.PersNr
AND ChefNr = (SELECT ChefNr
FROM Abteilung, Akte, Personal, Projekt
WHERE Abteilung.AbtNr = Projekt.AbtNr
AND Projekt.ProjNr = Personal.ProjNr
AND Personal.PersNr = Akte.PersNr
AND VName = 'Heinz');
LG Florian
Nö, das scheitert schon an der ersten Zeile.
LöschenBitte beachte auch die Groß/Kleinschreibung, sonst muss ich immer den ganzen Code aNpAsSeN ;)
Kleiner Tipp: Das geht viel kürzer.
Ok, das habe ich tatsächlich extra gemacht, damit man die Befehle noch etwas deutlicher dazwischen sieht :-) Ich lasse übrigens auch gerne andere versuchen... :)
AntwortenLöschenMensch Leute, seid doch nicht so passiv! Seit ich die Klsungsvorschläge online habe, habe ich mehr Besucher denn je auf meinem Blog...und nur einer schreibt auch was dazu?
AntwortenLöschenNoch ein Tipp für die SQL-Aufgabe: Selfjoin.
@Flo: Du musst in der Select-Anweisung die Attribute qualifizieren.
SELECT Akte.PERSNR, Personal.VNAME, Personal.NNAME, Personal.PROJNR, Personal.TELEFONNR, Personal.GEHALT
AntwortenLöschenFROM Abteilung, Akte, Personal, Projekt
WHERE Abteilung.Budget = Projekt.Budget
AND Akte.PersNr = Personal.PersNr
AND Akte.Gehalt = Personal.Gehalt
AND Personal.ProjNr = Projekt.ProjNr
AND Abteilung.AbtNr = Projekt.AbtNr
AND Personal.VNAME =‘‘HEINZ‘‘
AND Akte.Position = ‘’Abteilungsleiter’’;
Stimmt das?
Hi, mit dem Hinweis, dass es auch kürzer gehen müsste...
AntwortenLöschenSELECT persnr, vname, nname, projnr, telefonnr, gehalt
FROM Personal, Abteilung
WHERE projnr IN (
SELECT projnr
FROM Personal
WHERE vname='Heinz')
AND Personal.Persnr = Abteilung.chefnr
WÜrd mich interessieren, ob ich die Tabellen richtig interpretiert hab.
Danke!
lg