diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Bachelor/Datenbanken 2/ORDML.sql | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Bachelor/Datenbanken 2/ORDML.sql')
| -rw-r--r-- | Bachelor/Datenbanken 2/ORDML.sql | 61 |
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;
|
