Mittwoch, 26. August 2015

SQL-Aufgabe des Tages (2015-08-26)

Folgendes Szenario:

Ausgangsrelationen. Zum Vergrößern anklicken

Fremdschlüssel. Zum Vergrößern anklicken

Aufgabe: Ermittle den Abteilungsleiter von 'Heinz'
(mit PERSNR, VNAME, NNAME, PROJNR, TELEFONNR, GEHALT)

Lösungsvorschläge bitte in die Kommentare.

Kommentare:

  1. 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');

    LG Florian

    AntwortenLöschen
    Antworten
    1. Nö, das scheitert schon an der ersten Zeile.
      Bitte beachte auch die Groß/Kleinschreibung, sonst muss ich immer den ganzen Code aNpAsSeN ;)

      Kleiner Tipp: Das geht viel kürzer.

      Löschen
  2. 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öschen
  3. 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.

    AntwortenLöschen
  4. 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’’;

    Stimmt das?

    AntwortenLöschen
  5. 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

    AntwortenLöschen