Datenbanken:Prüfunglösung 2006.02.28 Lehner

Aus Tudwiki
Version vom 2. September 2010, 21:44 Uhr von ICD (Diskussion | Beiträge)

(Unterschied) Nächstältere Version→ | Aktuelle Version (Unterschied) | ←Nächstjüngere Version (Unterschied)
Wechseln zu: Navigation, Suche

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>