Datenbanken:Prüfunglösung 2006.02.28 Lehner
Aus Tudwiki
Version vom 2. September 2010, 21:44 Uhr von ICD (Diskussion | Beiträge)
Inhaltsverzeichnis
Aufgabe2[Bearbeiten]
a) Name von Lieferanten, die nur das Teil mit der Nr. 15 liefern. b) Teilenummern von Teilen, in die irgendwelche Schrauben direkt eingehen.
Aufgabe3[Bearbeiten]
- 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[Bearbeiten]
{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[Bearbeiten]
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>