summaryrefslogtreecommitdiffstats
path: root/Bachelor/Datenbanken 2/ORDML.sql
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Bachelor/Datenbanken 2/ORDML.sql
downloadStudium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz
Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Bachelor/Datenbanken 2/ORDML.sql')
-rw-r--r--Bachelor/Datenbanken 2/ORDML.sql61
1 files changed, 61 insertions, 0 deletions
diff --git a/Bachelor/Datenbanken 2/ORDML.sql b/Bachelor/Datenbanken 2/ORDML.sql
new file mode 100644
index 0000000..20a685b
--- /dev/null
+++ b/Bachelor/Datenbanken 2/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;