1. Aufgabe: Daten mit MERGE INTO aktualisieren und einfügen
Gegeben sind zwei Tabellen:
Bestellungen (vorhandene Daten) – Enthält bereits bestehende Bestellungen.
NeueBestellungen (neue Daten) – Enthält neue Bestellungen, die entweder bestehende Bestellungen aktualisieren oder neue Bestellungen hinzufügen sollen.
Tabelle: Bestellungen (vorhanden)
BestellID
Kunde
Produkt
Menge
101
Alice
Laptop
1
102
Bob
Maus
2
103
Charlie
Tastatur
1
104
Alice
Monitor
2
105
David
Headset
1
Tabelle: NeueBestellungen (neu)
BestellID
Kunde
Produkt
Menge
102
Bob
Maus
1
103
Charlie
Tastatur
2
106
Eve
Drucker
1
107
Frank
Mikrofon
2
Erwartete Ergebnistabelle nach dem MERGE INTO:
BestellID
Kunde
Produkt
Menge
101
Alice
Laptop
1
102
Bob
Maus
3
103
Charlie
Tastatur
3
104
Alice
Monitor
2
105
David
Headset
1
106
Eve
Drucker
1
107
Frank
Mikrofon
2
Aufgabe:
Schreibe die SQL-Query mit MERGE INTO, um aus den Tabellen Bestellungen und NeueBestellungen die Ergebnistabelle zu erzeugen.
Falls eine BestellID bereits existiert, soll die Spalte Menge aktualisiert werden (zusammengezählt).
Falls eine BestellID noch nicht existiert, soll der neue Datensatz eingefügt werden.
Lösung
MERGE INTO Bestellung as VUSING (NeueBestellung as N)ON (V.BestellID = N.BestellID)WHEN MATCHED THAN UPDATE SET V.Menge = V.Menge + N.MengeWHEN NOT MATCHED THAN INSERT VALUES (N.BestellID, N.Kunde, N.Produkt, N.Menge);
2. Aufgabe: Bestell- und Lagerverwaltung mit MERGE INTO
Gegeben sind zwei Tabellen:
Lagerbestand (vorhandene Daten) – Enthält Informationen über aktuelle Lagerbestände.
Bestellungen (neue Daten) – Enthält neue Bestellungen, die entweder bestehende Lagerbestände aktualisieren oder neue Produkte hinzufügen sollen.
Tabelle: Lagerbestand (vorhanden)
ProduktID
Produkt
Lagerbestand
Preis
201
Laptop
10
1200
202
Maus
50
25
203
Tastatur
30
45
204
Monitor
15
300
205
Headset
20
75
Tabelle: Bestellungen (neu)
ProduktID
Produkt
Bestellmenge
NeuerPreis
202
Maus
10
27
203
Tastatur
5
50
206
Drucker
8
150
207
Mikrofon
12
80
Erwartete Ergebnistabelle nach dem MERGE INTO:
ProduktID
Produkt
Lagerbestand
Preis
201
Laptop
10
1200
202
Maus
60
27
203
Tastatur
35
50
204
Monitor
15
300
205
Headset
20
75
206
Drucker
8
150
207
Mikrofon
12
80
Aufgabe:
Schreibe die SQL-Query mit MERGE INTO, um aus den Tabellen Lagerbestand und Bestellungen die Ergebnistabelle zu erzeugen.
Falls eine ProduktID bereits existiert, soll die Spalte Lagerbestand entsprechend der Bestellmenge erhöht und der Preis aktualisiert werden.
Falls eine ProduktID noch nicht existiert, soll der neue Datensatz eingefügt werden.
Viel Erfolg! 🚀
Lösung
MERGE INTO Lagerbestand as LUSING (Bestellung as B)ON (L.ProduktID = B.ProduktID) WHEN MATCHED THAN UPDATE SET L.Preis = B.NeuerPreis, L.Lagerbestand = L.Lagerbestand + B.BestellmengeWHEN NOT MATCHED THAN INSERT (ProduktID, Produkt, Lagerbestand, Preis) VALUES (B.ProduktID, B.Produkt, B.Bestellmenge, B.NeueerPreis);
3. Aufgabe: Bestell- und Lagerverwaltung mit relationalen Abhängigkeiten
Ein Unternehmen verwaltet Bestellungen und Lagerbestände über mehrere miteinander verknüpfte Tabellen. Ziel ist es, Bestellungen zu verarbeiten, den Lagerbestand anzupassen und relevante Informationen über Kunden, Produkte und Lieferanten zu aktualisieren. Dabei sollen sowohl vorhandene Daten modifiziert als auch neue Einträge hinzugefügt werden.
Gegeben sind vier Tabellen:
Lagerbestand – Enthält Produkte mit ihren aktuellen Beständen und Preisen.
Kunden – Enthält registrierte Kunden und deren Gesamtausgaben.
Lieferanten – Enthält Informationen über Lieferanten der Produkte.
Bestellungen – Enthält neue Bestellungen von Kunden.
Tabelle: Lagerbestand (vorhanden)
ProduktID
LieferantID
Name
Lagerbestand
Preis
P001
L01
Laptop
20
1500
P002
L02
Maus
200
30
P003
L03
Monitor
50
350
P004
L01
Tastatur
100
70
P005
L02
Headset
40
90
Tabelle: Kunden (vorhanden)
KundeID
Name
Gesamtausgaben
C001
Alice
8000
C002
Bob
5200
C003
Charlie
3400
C004
David
2500
Tabelle: Lieferanten (vorhanden)
LieferantID
Name
Standort
L01
TechSupply GmbH
Berlin
L02
ElektroPlus AG
München
L03
VisionTech Ltd
Hamburg
Tabelle: Bestellungen (neu)
BestellID
KundeID
ProduktID
Bestellmenge
B001
C001
P002
10
B002
C005
P003
5
B003
C002
P004
7
B004
C006
P006
3
Erwartete Ergebnistabellen nach der Verarbeitung:
Lagerbestand nach Aktualisierung:
ProduktID
LieferantID
Name
Lagerbestand
Preis
P001
L01
Laptop
20
1500
P002
L02
Maus
190
30
P003
L03
Monitor
45
350
P004
L01
Tastatur
93
70
P005
L02
Headset
40
90
P006
NULL
Unbekannt
-3
NULL
Kunden nach Aktualisierung:
KundeID
Name
Gesamtausgaben
C001
Alice
8300
C002
Bob
5690
C003
Charlie
3400
C004
David
2500
C005
Eve
1750
C006
Frank
1050
Aufgabe:
Schreibe SQL-Queries mit MERGE INTO, um die Tabellen Lagerbestand, Kunden und Lieferanten entsprechend den Bestellungen zu aktualisieren:
Falls eine ProduktID bereits existiert, soll die Spalte Lagerbestand entsprechend der Bestellmenge reduziert werden.
Falls eine ProduktID nicht existiert, soll ein neuer Eintrag mit NULL-Werten in Lagerbestand eingefügt werden.
Falls eine KundeID bereits existiert, soll die Spalte Gesamtausgaben basierend auf der Bestellung aktualisiert werden.
Falls eine KundeID nicht existiert, soll ein neuer Kunde mit initialen Ausgaben eingetragen werden.
Falls eine Bestellung über 1000€ liegt, soll ein 5%-Rabatt gewährt werden.
Falls ein Produkt von einem unbekannten Lieferanten stammt, soll ein neuer Lieferant mit dem Namen “Unbekannt” und NULL-Werten für Standort eingefügt werden.