MERGE INTO-Anweisungen Übungen.

1. Aufgabe: Daten mit MERGE INTO aktualisieren und einfügen

Gegeben sind zwei Tabellen:

  1. Bestellungen (vorhandene Daten) – Enthält bereits bestehende Bestellungen.
  2. NeueBestellungen (neue Daten) – Enthält neue Bestellungen, die entweder bestehende Bestellungen aktualisieren oder neue Bestellungen hinzufügen sollen.

Tabelle: Bestellungen (vorhanden)

BestellIDKundeProduktMenge
101AliceLaptop1
102BobMaus2
103CharlieTastatur1
104AliceMonitor2
105DavidHeadset1

Tabelle: NeueBestellungen (neu)

BestellIDKundeProduktMenge
102BobMaus1
103CharlieTastatur2
106EveDrucker1
107FrankMikrofon2

Erwartete Ergebnistabelle nach dem MERGE INTO:

BestellIDKundeProduktMenge
101AliceLaptop1
102BobMaus3
103CharlieTastatur3
104AliceMonitor2
105DavidHeadset1
106EveDrucker1
107FrankMikrofon2

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 V
USING (NeueBestellung as N)
ON (V.BestellID = N.BestellID)
WHEN MATCHED THAN
  UPDATE SET V.Menge = V.Menge + N.Menge
WHEN 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:

  1. Lagerbestand (vorhandene Daten) – Enthält Informationen über aktuelle Lagerbestände.
  2. Bestellungen (neue Daten) – Enthält neue Bestellungen, die entweder bestehende Lagerbestände aktualisieren oder neue Produkte hinzufügen sollen.

Tabelle: Lagerbestand (vorhanden)

ProduktIDProduktLagerbestandPreis
201Laptop101200
202Maus5025
203Tastatur3045
204Monitor15300
205Headset2075

Tabelle: Bestellungen (neu)

ProduktIDProduktBestellmengeNeuerPreis
202Maus1027
203Tastatur550
206Drucker8150
207Mikrofon1280

Erwartete Ergebnistabelle nach dem MERGE INTO:

ProduktIDProduktLagerbestandPreis
201Laptop101200
202Maus6027
203Tastatur3550
204Monitor15300
205Headset2075
206Drucker8150
207Mikrofon1280

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 L
USING (Bestellung as B)
ON (L.ProduktID = B.ProduktID) 
WHEN MATCHED THAN
  UPDATE SET L.Preis = B.NeuerPreis, 
             L.Lagerbestand = L.Lagerbestand + B.Bestellmenge
WHEN 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:

  1. Lagerbestand – Enthält Produkte mit ihren aktuellen Beständen und Preisen.
  2. Kunden – Enthält registrierte Kunden und deren Gesamtausgaben.
  3. Lieferanten – Enthält Informationen über Lieferanten der Produkte.
  4. Bestellungen – Enthält neue Bestellungen von Kunden.

Tabelle: Lagerbestand (vorhanden)

ProduktIDLieferantIDNameLagerbestandPreis
P001L01Laptop201500
P002L02Maus20030
P003L03Monitor50350
P004L01Tastatur10070
P005L02Headset4090

Tabelle: Kunden (vorhanden)

KundeIDNameGesamtausgaben
C001Alice8000
C002Bob5200
C003Charlie3400
C004David2500

Tabelle: Lieferanten (vorhanden)

LieferantIDNameStandort
L01TechSupply GmbHBerlin
L02ElektroPlus AGMünchen
L03VisionTech LtdHamburg

Tabelle: Bestellungen (neu)

BestellIDKundeIDProduktIDBestellmenge
B001C001P00210
B002C005P0035
B003C002P0047
B004C006P0063

Erwartete Ergebnistabellen nach der Verarbeitung:

Lagerbestand nach Aktualisierung:

ProduktIDLieferantIDNameLagerbestandPreis
P001L01Laptop201500
P002L02Maus19030
P003L03Monitor45350
P004L01Tastatur9370
P005L02Headset4090
P006NULLUnbekannt-3NULL

Kunden nach Aktualisierung:

KundeIDNameGesamtausgaben
C001Alice8300
C002Bob5690
C003Charlie3400
C004David2500
C005Eve1750
C006Frank1050

Aufgabe:

Schreibe SQL-Queries mit MERGE INTO, um die Tabellen Lagerbestand, Kunden und Lieferanten entsprechend den Bestellungen zu aktualisieren:

  1. Falls eine ProduktID bereits existiert, soll die Spalte Lagerbestand entsprechend der Bestellmenge reduziert werden.
  2. Falls eine ProduktID nicht existiert, soll ein neuer Eintrag mit NULL-Werten in Lagerbestand eingefügt werden.
  3. Falls eine KundeID bereits existiert, soll die Spalte Gesamtausgaben basierend auf der Bestellung aktualisiert werden.
  4. Falls eine KundeID nicht existiert, soll ein neuer Kunde mit initialen Ausgaben eingetragen werden.
  5. Falls eine Bestellung über 1000€ liegt, soll ein 5%-Rabatt gewährt werden.
  6. 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.

Viel Erfolg! 🚀