From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- Bachelor/Datenbanken 2/Praktikum5/ORDML.sql | 61 +++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 Bachelor/Datenbanken 2/Praktikum5/ORDML.sql (limited to 'Bachelor/Datenbanken 2/Praktikum5/ORDML.sql') diff --git a/Bachelor/Datenbanken 2/Praktikum5/ORDML.sql b/Bachelor/Datenbanken 2/Praktikum5/ORDML.sql new file mode 100644 index 0000000..20a685b --- /dev/null +++ b/Bachelor/Datenbanken 2/Praktikum5/ORDML.sql @@ -0,0 +1,61 @@ +/* Dieses Skript enthält alle INSERTS und UPDATES + zum Anlegen zweier Kunden und zweier Aufträge, + die sich gegenseitig referenzieren (Bsp. Kapitel 7). + Basis hierfür sind die Types aus dem Skript + ORTypes.sql +*/ +-- Kunde 1 (ohne Auftragsreferenzen) +INSERT INTO T_Kunde (KNr,Name,Adresse,Telefon,Kontakt) +VALUES (10,'Schmidt', + Typ_Adresse(64295,'DA','X-Str.','45'), + Typ_Telefon('111','222',NULL), + Typ_Kontakt('Kontaktmann 5','Kontaktmann 6') + ); + +-- Kunde 2 (ohne Auftragsreferenzen) +INSERT INTO T_Kunde (KNr,Name,Adresse,Telefon,Kontakt) +VALUES (20,'Huber', + Typ_Adresse(60433,'FFM','Y-Str.','56'), + Typ_Telefon('333','NULL',NULL), + Typ_Kontakt('Person 1','Person 2','Person 3') + ); + +-- Auftrag 1 (ohne Kundenreferenz) +INSERT INTO T_Auftrag (ANr,Eingang,Bearb) +VALUES (101,'24.05.2005','24.05.2005'); + +-- Auftrag 2 (ohne Kundenreferenz) +INSERT INTO T_Auftrag (ANr,Eingang,Bearb) +VALUES (102,'31.05.2005','31.05.2005'); + +-- Kundenreferenzen in Auftragsobjekte eintragen +UPDATE T_Auftrag a +SET a.RefKunde = (SELECT REF(k) + FROM T_Kunde k + WHERE k.KNr = 10) +WHERE a.Anr = 101; + +UPDATE T_Auftrag a +SET a.RefKunde = (SELECT REF(k) + FROM T_Kunde k + WHERE k.KNr = 20) +WHERE a.Anr = 102; + +-- Tabelle der Auftragsreferenzen in Kundenobjekte eintragen +UPDATE T_Kunde k +SET k.RefAuftrag = CAST(MULTISET + (SELECT REF(a) + FROM T_Auftrag a + WHERE a.RefKunde.knr = 10) AS Typ_Auftragtab) +WHERE k.knr = 10; + +UPDATE T_Kunde k +SET k.RefAuftrag = CAST(MULTISET + (SELECT REF(a) + FROM T_Auftrag a + WHERE a.RefKunde.knr = 20) AS Typ_Auftragtab) +WHERE k.knr = 20; + +-- Verwendung der Methode Last_Bestellung als Spaltenfunktion +select k.KNr, k.Last_Bestellung() +from T_Kunde k; -- cgit v1.2.3