PROMPT Sommersemester 2006 PROMPT Leistungsnachweis K5D42 PROMPT PROMPT Etliche der folgenden Programmzeilen sind nicht Teil PROMPT der Loesung, sondern machen die Zeilen ablauffaehig PROMPT und dienen damit lediglich der Ueberpruefung PROMPT der Korrektheit der Loesung. PROMPT PROMPT Aufgabe 1 a) PROMPT Anlegen der Tabelle haltestellen DROP TABLE haltestellen; CREATE TABLE haltestellen (nr_der_haltestelle NUMBER, name_der_haltestelle CHAR(20)); PROMPT Anlegen der Tabelle lh DROP TABLE lh; CREATE TABLE lh (linie CHAR(20), nummer_der_haltestelle NUMBER); PROMPT Aufgabe 1 b) INSERT INTO haltestellen VALUES( 64, 'Hauptbahnhof'); INSERT INTO haltestellen VALUES( 43, 'Ettlinger Tor'); INSERT INTO lh VALUES( 'S1', 43); INSERT INTO lh VALUES( ' 4', 43); SELECT * FROM haltestellen; SELECT * FROM lh; PROMPT Aufgabe 1 c) SELECT * FROM haltestellen ORDER BY name_der_haltestelle; PROMPT Aufgabe 1 d) SELECT l.linie, h.name_der_haltestelle FROM lh l, haltestellen h WHERE l.nummer_der_haltestelle=h.nr_der_haltestelle ORDER BY l.linie; PROMPT Aufgabe 1 e) PROMPT Weniger elegant, da VIEW hilfe benutzt wird. DROP VIEW hilfe; CREATE VIEW hilfe as SELECT nummer_der_haltestelle, COUNT(*) anzahl_der_linien FROM lh GROUP BY nummer_der_haltestelle; SELECT * FROM hilfe; SELECT h.nr_der_haltestelle, h.name_der_haltestelle, l.anzahl_der_linien FROM haltestellen h, hilfe l WHERE h.nr_der_haltestelle=l.nummer_der_haltestelle; PROMPT So geht es auch! In der FROM-Klausel steht ein SELECT! PROMPT Elegant, da ohne VIEW hilfe ausgekommen wird. SELECT h.nr_der_haltestelle, h.name_der_haltestelle, l.anzahl_der_linien FROM haltestellen h, (SELECT nummer_der_haltestelle, COUNT(*) anzahl_der_linien FROM lh GROUP BY nummer_der_haltestelle) l WHERE h.nr_der_haltestelle=l.nummer_der_haltestelle; PROMPT Aufgabe 2 PROMPT Anlegen der Tabelle laender_der_erde DROP TABLE laender_der_erde; CREATE TABLE laender_der_erde (name_des_landes CHAR(20), pke NUMBER(10,2)); INSERT INTO laender_der_erde VALUES( 'Argentinien', 2140); INSERT INTO laender_der_erde VALUES( 'Brasilien', 1004); INSERT INTO laender_der_erde VALUES( 'USA', 11386); INSERT INTO laender_der_erde VALUES( 'Deutschland', 5450); SELECT * FROM laender_der_erde; PROMPT Aufgabe 2 a) SELECT MIN(pke), MAX(pke), AVG(pke) FROM laender_der_erde; PROMPT Aufgabe 2 b) SELECT name_des_landes, pke FROM laender_der_erde WHERE pke = (SELECT MIN(pke) FROM laender_der_erde); PROMPT Aufgabe 2 c) SELECT a.name_des_landes, b.name_des_landes, ABS(a.pke-b.pke) FROM laender_der_erde a, laender_der_erde b WHERE a.pke-b.pke = ( SELECT MAX(ABS(a.pke-b.pke)) FROM laender_der_erde a, laender_der_erde b) OR a.pke-b.pke = ( SELECT MIN(ABS(a.pke-b.pke)) FROM laender_der_erde a, laender_der_erde b WHERE a.name_des_landes<>b.name_des_landes); PROMPT Aufgabe 3 PROMPT Anlegen der Tabelle koordinaten DROP TABLE koordinaten; CREATE TABLE koordinaten (ort CHAR(10), rechtswert number, hochwert number); INSERT INTO koordinaten VALUES ('Karlsruhe',3456, 5431); INSERT INTO koordinaten VALUES ('Ettlingen',3451, 5424); INSERT INTO koordinaten VALUES ('Rastatt',3462, 5471); INSERT INTO koordinaten VALUES ('Mannheim',3419, 5444); INSERT INTO koordinaten VALUES ('Bruchsal',3462, 5439); SELECT * FROM koordinaten; PROMPT Aufgabe 3 a) SELECT ort, SQRT(POWER(rechtswert-3456,2)+POWER(hochwert-5431,2)) "Entfernung" FROM koordinaten WHERE SQRT(POWER(rechtswert-3456,2)+POWER(hochwert-5431,2)) < 30 AND ort<>'Karlsruhe'; PROMPT Aufgabe 3 b) SELECT 'Entfernung von Karlsruhe nach ', ort, SQRT(POWER(rechtswert-3456,2)+POWER(hochwert-5431,2)) "KM" FROM koordinaten WHERE (rechtswert, hochwert)=(SELECT rechtswert, hochwert FROM koordinaten WHERE ort='Bruchsal'); PROMPT Aufgabe 3 c) SELECT ort, SQRT(POWER(rechtswert-3456,2)+POWER(hochwert-5431,2)) "KM" FROM koordinaten WHERE SQRT(POWER(rechtswert-3456,2)+POWER(hochwert-5431,2)) > (SELECT SQRT(POWER(rechtswert-3456,2)+POWER(hochwert-5431,2)) FROM koordinaten WHERE ort='Bruchsal'); PROMPT Aufgabe 3 d) SELECT a.ort, b.ort, SQRT(POWER(a.rechtswert-b.rechtswert,2)+ POWER(a.hochwert-b.hochwert,2)) "Entfernung" FROM koordinaten a, koordinaten b WHERE a.ort