Datenbanken:Prüfunglösung 2006.02.28 Lehner
Aus Tudwiki
Inhaltsverzeichnis
Aufgabe2
a) Name von Lieferanten, die nur das Teil mit der Nr. 15 liefern. b) Teilenummern von Teilen, in die irgendwelche Schrauben direkt eingehen.
Aufgabe3
- Abteilungsleiter des Mitarbeiters Krämer
SELECT Name, Vorname FROM Mitarb, Abtleilung WHERE Abtleilung.Aleiter=Mitarb.Mnr AND Abtleilung.Abtnr= ( SELECT Abtnr FROM Mitarb WHERE Name="Krämer" )
- Alle Projektleiter mit Name,Projektnummer,Abschlussdatum
SELECT Mitarb.Name, Mitarb.Vorname, Projekt.Pnr, Projekt.Abschlussdatum FROM Projekt, Mitarb WHERE Projekt.PLeiter=Mitarb.Mnr
- Durchschnittliches Gehalt aller Abteilungen ohne Projektleiter danach sortiert
SELECT AVG(Gehalt) AS SCHNITT FROM Mitarb GROUP BY Abtnr WHERE Mnr NOT IN (SELECT PLeiter FROM Projekt) ORDER BY SCHNITT
- Mitarbeiter-Nummer, Projektname, Firmenname und Stdanz des Projektes mit der geringsten Stdanzahl eines Mitarbeiters
WITH TempTab (MNR,SUMME) AS (SELECT MNR,SUM(STUNDEN) AS SUMME FROM Mitpro GROUP BY MNR)
SELECT * FROM TempTab WHERE SUMME = (SELECT MIN(SUMME) FROM TempTab)
// hier müssten noch die ganzen JOINS rein..hab jetzt aber keinen BOck drauf
- View erstellen mit Abtnr und Anzahl der Mitarbeiter pro Abteilung
CREATE VIEW temp AS ( SELECT Abtnr, COUNT(*) AS ANZAHL FROM Mitarb GROUP BY Abtnr )
- Gehalt aller Mitarbeiter die in der Abteilung 'RZ' arbeiten um 10% erhöhen (Update)
UPDATE Mitarb SET gehalt=gehalt*1,1 WHERE Abtbez="RZ"
das geht nicht, meine Version:
UPDATE Mitarb SET gehalt=gehalt*1,1 WHERE Abtnr =(SELECT DISTINCT Abtnr FROM Abteilung WHERE Abtbez = "RZ");
Aufgabe 4
{A}->{D}, {B}->{F}, {D}->{A,B,C,F}, {F}->{E,D}
"nee,nee, {D}->{C,E,F} war zweimal rechts reduzierbar! also ergibt sich: {D}->{A,B,C} (weil {B}->{F})"
Aufgabe 6
a) //vorlesung[position()=2]/@*
b) Ja. Der erste Ausdruck gibt die zweite Vorlesung aus, wenn sie um 11 Uhr stattfindet. Der Zweite gibt die zweite Vorlesung aus, die um 11 Uhr stattfindet.
c)
<personal> {for $p1 in fn:distinct-values(fn:doc("vorlesung.xml")//vorlesender/nachname) let $p2 := fn:doc("vorlesung.xml")//vorlesender[nachname=$p1] return <person anzahlVL="{fn:count($p2)}"> {$p2[1]/nachname} {$p2[1]/vorname} </person> } </personal>