Quickmenu

Die Abfrage einer Datenbank unter FoxPro 6.0 für WINDOWS mit RQBE

ERM der vollständig in Beziehungen gesetzten Datenbasis mit korrekt gesetzten Beziehungen

Ansicht der vollständig implementierten Datenbasis mit korrekt gesetzten Beziehungen

Aufgabe0: Setzen Sie alle Tabellen in ein Beziehungsgefüge entsprechend dem ERM! 

(10 Punkte)

Aufgabe1: Gesucht sind alle Piloten, welche derzeit nicht flugtauglich sind! 

(6Zieldatensätze - 1 Punkt)

Aufgabe 2: Gesucht Typ und Baujahr von Flugzeugen, welche vor 1991 gebaut wurden!

(5 Zieldatensätze - 2 Punkte)

Aufgabe 3: Gesucht ist das Datum, an welchem Paris als Zielflughafen erreicht werden kann!

(2 Zieldatensätze - 2 Punkte)

Aufgabe 4: Welche Flugzeugtypen wurden zwischen 1970 und 1980 gebaut!

(1 Zieldatensatz - 2 Punkte)

Aufgabe 5: Gesucht sind die Namen und Vornamen aller Piloten, die eine BOING fliegen!

(3 Zieldatensätze - 2 Punkte)

Aufgabe 6: Gesucht sind die Namen sowie Flugstundenzahl des Piloten mit den meisten Flugstunden!

(1 Zieldatensatze - 3 Punkte)

Aufgabe7: Anzuzeigen ist die Summe aller verfügbaren Sitzplätze in den Maschinen!

(1 Zieldatensatz - 3 Punkte)

Aufgabe 8: Welche Flugzeugnummern machen keinen Zwischenstopp?

(4 Zieldatensätze - 3 Punkte)

Aufgabe 9: Gesucht sind Namen und Vornamen von Piloten, die Rom anfliegen (... also irgendwann auf irgendeinem Flug Rom passieren!!!)!

(2 Zieldatensätze - 4 Punkte)

Aufgabe 10: Gesucht sind Namen und Vornamen von Piloten, die Maschinen mit mehr als 200 Sitzplätzen fliegen und deren Maschine 1980 gebaut wurde!

(0 Zieldatensätze - 4 Punkte)

Aufgabe 11: Gesucht sind die Linien, auf denen die Piloten Kühnert, Pirschkes und Colbe unterwegs sind - geben Sie dabei zwei verschiedene Lösungen (als a und b) an!

(6 Zieldatensätze - 6 Punkte)

MATNR NAME LEHRST
ABCX1 Müller DB
FRSR2 Gross BS
GFDS7 Meier RS
OUZT9 Klein IS
TTHC9 Meier DB

Tabelle 1 PRO1 (Einschreibliste 1)

MATNR NAME LEHRST
FRSR2 Gross BS
GOJK4 Baum SWT
NIKT7 Bauer IS
TTHC9 Meier DB
ZTRE5 Klein RS

Tabelle 2 PRO2 (Einschreibliste 2)

MATNR NAME ORT DATUM
ABCX1 Müller Berlin 27.03.73
FRSR2 Gross Halle 14.09.70
GFDS7 Meier Dresden 02.07.71
GOJK4 Baum Leipzig 01.08.73
NIKT7 Bauer Chemnitz 27.04.69
OUZT9 Klein Berlin 19.11.70
TTHC9 Meier Dresden 23.09.71
ZTRE5 Klein Erfurt 22.11.70

Tabelle 3 IMMA (Immatrikulation von Studenten)

LST LNAME LEITER TITEL VORGESETZTER GEHALT
BS Betriebssysteme Hubricht Dr. tec Richter 2.677,45 DM
DB Datenbanken Richter Prof. Dr. sc.   4.681,00 DM
IS Informationssysteme Franke Diplominformatker Richter 3.722,00 DM
RS Rechnersysteme Müller   Hubricht 2.741,56 DM
SWT Softwaretechnologie Reinhardt Dr. sc Müller 2.321,89 DM

Tabelle 4 LS (Bezeichnungen und Leiter der Lehrstühle)

MATNR LST DB
ABCX1 DB 1
FRSR2 BS 4
GFDS7 RS 3
GOJK4 SWT 2
NIKT7 IS 4
OUZT9 IS 5
TTHC9 DB 3
ZTRE5 RS 3

Tabelle 5 NOTEN (Noten von Studenten verschiedener Lehrstühle im Fach "Datenbanken")

PRNUMMER MATNR1 MATNR2 VON BIS BESTANDEN
01/GRA-5 ZTRE5 OUZT9 01.12.96 18.12.96 Nein
14/INF-4 NIKT7 GFDS7 23.04.95 10.10.96 Ja
23/RET-3 ZTRE5 GFDS7 11.03.95 04.04.95 Ja

Tabelle 6 PRAKTIKUM

Es wird auf die Beispielrelationen PR01, PRO2, IMMA, LS, NOTEN und PRAKTIKUM zurückgegriffen. Alle Erklärungen beziehen sich auf Standard-SQL und können in RQBE oder ACCESS voneinander abweichen!!!

Projektion und Selektion bezüglich einer Tabelle


1. Wann wurde die im Bestand verfügbare DC 10 Gebaut?

5 relevante Zieldatensätze

SELECT Prof1.name, Prof1.lehrst;
FROM prof1


2. Welche Flugzeuge sind von der Marke BOING?

8 relevante Zieldatensätze

SELECT Noten.matnr, Noten.db;
FROM noten


Ausdrücke in der SQL

Bedingungen in der WHERE-Klausel

allgemein: WHERE <search condition> (true oder false)


3. Gesucht sind die Namen aller Studenten, welche aus Halle kommen!

1 relevanter Zieldatensatz

SELECT Imma.name;
FROM imma;
WHERE Imma.ort = "Halle"


4. Gesucht sind die Namen aller Studenten, deren Namen mit "M" beginnt!

3 relevante Zieldatensätze

SELECT Imma.name;
FROM imma;
WHERE Imma.name LIKE "M%"


5. Gesucht sind die Namen aller Studenten, deren Matrikelnummer eine "1" enthält!

1 relevanter Zieldatensatz

SELECT Imma.name, Imma.matnr;
FROM imma;
WHERE Imma.matnr LIKE "%1%"


6. Gesucht sind die Namen aller Studenten, welche vor 1971 geboren wurden!

3 relevante Zieldatensätze

Einstellungen beachten!!!

Ländereinstellungen beachten!!!

SELECT DISTINCTROW IMMA.NAME
FROM IMMA
WHERE (((IMMA.DATUM)<#1/1/71#));


7. Gesucht alle Immatrikulations-Angaben zu den Studenten, welche "Meier" heißen!

2 relevante Zieldatensätze

SELECT Imma.name, Imma.matnr, Imma.ort, Imma.datum;
FROM imma;
WHERE Imma.name == "Meier"


Komplexe Bedingungen mit Vorrangregelung


8. Gesucht sind die Matrikelnummern aller Studenten, deren Leistungen im Fach Datenbanken 1 oder 4 betragen!

3 relevante Zieldatensätze

SELECT Noten.matnr;
FROM noten;
WHERE Noten.db = "1";
OR (Noten.db = "4")


NULLWERTE

9. Gesucht sind die Name und Lehrstuhl-Bezeichnung der Leiter, die über keinen akademischen Grad verfügen!

1 relevanter Zieldatensatz

SELECT DISTINCTROW LS.LEITER, LS.LNAME
FROM LS
WHERE (((LS.TITEL) Is Null));


10. Gesucht sind Matrikelnummer und Lehrstuhl aller Studenten, deren Note im Fach Datenbanken besser als 2 ist!

1 relevanter Zieldatensatz

SELECT Imma.matnr, Noten.lst;
FROM imma INNER JOIN noten ;
ON Imma.matnr = Noten.matnr;
WHERE Noten.db < "2"


JOINS in der FROM-Klausel

allgemein: FROM <tabelle_1> JOIN <tabelle_2>


11. Gesucht sind die Matrikelnummern der Studenten mit Namen "Müller", des Lehrstuhles Datenbanken der Einschreibliste 1!

1 relevanter Zieldatensatz

SELECT Imma.matnr;
FROM imma INNER JOIN prof1 ;
ON Imma.matnr = Prof1.matnr;
WHERE Prof1.name = "Müller"


12. Gesucht sind die Namen aller Studenten, deren Namen mit "M" beginnt und welche nicht aus Dresden kommen!

1 relevanter Zieldatensatz

SELECT Imma.name;
FROM imma;
WHERE Imma.name LIKE "M%";
AND Imma.ort <> "Dresden"


13. Gesucht sind die Namen der Leiter aller Lehrstühle, die einen akademischen Abschluß haben und nicht "Hubricht" heißen!

1 relevanter Zieldatensatz

SELECT Ls.leiter;
FROM ls;
WHERE Ls.titel IS NULL;
AND Ls.leiter <> "Hubricht"


14. Gesucht ist der Name der Studenten, die Meier heißen, und aus Dresden oder Halle kommen!

3 relevante Zieldatensätze (falsch)

 

3 relevante Zieldatensätze (richtig)

SELECT Imma.name;
FROM imma;
WHERE Imma.name = "Meier";
AND Imma.ort = "Dresden";
OR (Imma.ort = "Halle")

FALSCH!!!

SELECT DISTINCTROW IMMA.NAME
FROM IMMA
WHERE (IMMA.NAME="Meier") AND ((IMMA.ORT="Dresden") OR (IMMA.ORT="Halle"));

RICHTIG!!!

Die falsche Lösung resultiert aus der Vorrangautomatik der logischen Funktionen

IN-Prädikat

SELECT <projection> FROM join WHERE bezeichner IN ('ausdruck1','ausdruck2');


15. Gesucht sind alle Angaben zu den Studenten, welche "Meier", "Bauer" oder "Groß" heißen!

3 relevante Zieldatensätze

SELECT Imma.name;
FROM imma;
WHERE Imma.name IN ("Meier","Bauer","Groß")


BETWEEN-Prädikat

SELECT <projection> FROM <join> WHERE <bezeichner> BETWEEN (<ausdruck1> AND <ausdruck2>);


16. Gesucht sind alle Angaben zu den Studenten, welche im Fach Datenbanken mit einer Note zwischen 1 bis 4 abgeschlossen haben!

3 relevante Zieldatensätze

SELECT Imma.*, Noten.db;
FROM imma INNER JOIN noten ;
ON Imma.matnr = Noten.matnr;
WHERE Noten.db BETWEEN "1" AND "4"


INNER-Join Natürlicher Verbund

... ist die Standard-Verbindung über Fremdschlüssel!!!


17. Gesucht sind Namen, der Lehrstuhl sowie die Note im Fach Datenbanken aller Studenten!

8 relevante Zieldatensätze

SELECT Imma.name, Imma.ort, Noten.lst, Noten.db;
FROM imma INNER JOIN noten ;
ON Imma.matnr = Noten.matnr


AUTO-JOIN Selbstbezug einer Tabelle


18. Wer ist wessen Leiter?

5 relevante Zieldatensätze

SELECT Ls.lname, Ls_a.leiter;
FROM ls INNER JOIN ls Ls_a ;
ON Ls.ls = Ls_a.ls


19. Wer ist verdient mehr als sein Chef?

1 relevanter Zieldatensatz

SELECT DISTINCTROW LS.LEITER
FROM LS INNER JOIN LS AS LS_1 ON LS.VORGESETZTER = LS_1.LEITER
WHERE (((LS.GEHALT)>[LS_1].[Gehalt]) AND ((LS_1.LEITER)<>[LS].[Leiter]));


20. Welche Studenten haben miteinander Praktikum gemacht und dieses nicht bestanden?

1 relevanter Zieldatenstz

SELECT Projekt.matnr1, Projekt.matnr2;
FROM projekt INNER JOIN imma ;
ON Projekt.matnr1 = Imma.matnr;
WHERE Projekt.bestanden <> .T.


21. Welche Lehrstuhlleiter haben ein höheres Gehalt als Herr Müller?

1 relevanter Zieldatenstz

SELECT Projekt.matnr1, Projekt.matnr2;
FROM projekt INNER JOIN imma ;
ON Projekt.matnr1 = Imma.matnr;
WHERE Projekt.bestanden <> .T.


OUTER-Join Natürlicher Verbund

Union-Operator

25. Welche Studenten sind in den Immatrikulationslisten PRO1 und PRO2eingetragen?

SELECT PRO1.MATNR, PRO1.NAME, PRO1.LEHRST
FROM PRO1
UNION SELECT DISTINCTROW PRO2.MATNR, PRO2.NAME, PRO2.LEHRST
FROM PRO2;

8 relevante Zieldatensätze

Berechnete Abfragen

26. Gesucht ist die Höhe des Beitrages an die Gesellschaft für Informatik" der Lehrstuhlleiter, wenn der Monatsbeitrag 2,7% vom Bruttogehalt beträgt!

SELECT DISTINCTROW LS.TITEL, LS.LEITER, [LS]![Gehalt]/100*2.7
AS [Beitrag Gesellschaft für Informatik]
FROM LS;

5 relevante Zieldatensätze

Aggregierende (zusammenfassende) Funktionen

HAVING <function>

27. Gesucht ist das Durchschnittsgehalt der Professoren!

SELECT DISTINCTROW Avg(LS.GEHALT) AS [Das Durchschnittsgehalt]
FROM LS;

1 relevanter Zieldatensatz

28. Gesucht ist das Geburtsdatum des ältesten Studenten!

SELECT DISTINCTROW Max(IMMA.DATUM) AS [ältester Student]
FROM IMMA;

1 relevanter Zieldatensatz

Sortierungen

ORDER BY <feldname>

29. Gesucht ist eine Liste der Lehrstuhlleiter-Gehälter aufsteigend sortiert!

SELECT DISTINCTROW LS.TITEL, LS.LEITER, LS.GEHALT
FROM LS
ORDER BY LS.GEHALT;

5 relevante Zieldatensätze

30. Gesucht ist eine Liste der Namen von immatrikulierten Studenten, wobei der jüngste zuerst geführt wird!

SELECT DISTINCTROW IMMA.NAME, IMMA.DATUM
FROM IMMA
ORDER BY IMMA.DATUM DESC;

8 relevante Zieldatensätze

Gruppierungsfunktionen

GROUP BY <feldname>


31. Gesucht ist eine Liste der Wohnorte der immatrikulierten Studenten sowie die Angabe der Zahl von Studenten, die aus dem gleichen Ort stammen!

1 relevanter Zieldatenstz

SELECT Count(IMMA.NAME) AS [Anzahl von NAME], IMMA.ORT
FROM IMMA
GROUP BY IMMA.ORT
ORDER BY Count(IMMA.NAME);

8 relevante Zieldatensätze

32. Gesucht ist der Name des Studenten mit der besten Note im Fach Datenbanken!

SELECT DISTINCTROW Avg(LS.GEHALT) AS [Das Durchschnittsgehalt]
FROM LS;

1 relevanter Zieldatensatz

Quantifizierende Prädikate

ALL

ANY

SOME

EXISTS

Subqueries

ALL

ANY

SOME

EXISTS

Aktionsabfragen