Files
obsidian/WS2324/Datenbank/Unterricht/13 Tutorium/Aufgaben.md

113 lines
2.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
b)
1. π Vorname,Nachname,Anrede σ Anrede='Herr' ∧ Nachname ≥ 'D' ∧ Nachname < 'E'Kunde
2. π Vorname σ Anrede='Frau' ∧ Plz='39846' Kunde
3. π Artikelname σ Standort='INF'(Lager ⨝ ANummer=Artikelnummer Artikel)
4. π Bestellnummer,Bestellstatus,Vorname,Nachname σ Anrede='Herr' ∧ Bestellstatus='bestaetigt' (Kunde ⨝ Kundennummer=Kundennummer Bestellung )
5. π Plz,Strasse,Nachname,Wunschterminσ Wunschtermin≥'23.07.2016'∧ Wunschtermin <'24.07.2016' (Kunde ⨝ Kundennummer=Kundennummer Bestellung)
2 d
1. SELECT \* FROM Artikel order by preis
2. SELECT vorname, nachname, geburtsdatum FROM kunde WHERE vorname like 'M%' ORDER by geburtsdatum
3. SELECT COUNT(\*) FROM kunde WHERE anrede = 'Frau'
4. select * from kunde where anrede='Frau' order by geburtsdatum DESC FETCH FIRST 1 ROW ONLY;
3.
a)
```
CREATE OR REPLACE TRIGGER vor_insert_bestellposition
BEFORE INSERT ON Bestellposition
FOR EACH ROW
DECLARE
    anzahl_bestellungen NUMBER;
BEGIN
    -- Zählen Sie die Anzahl der Bestellungen für den Artikel
    SELECT COUNT(*)
    INTO anzahl_bestellungen
    FROM Bestellposition
    WHERE Artikelnummer = :NEW.Artikelnummer;
    -- Überprüfen Sie, ob der Artikel mindestens fünfmal bestellt wurde
    IF anzahl_bestellungen >= 5 THEN
        -- Fügen Sie einen Rabatt von 10% hinzu
        :NEW.Reduktion := 10;
    END IF;
END;
```
b)
```
CREATE OR REPLACE PROCEDURE deleteOrder(p_idBestellung IN NUMBER) AS
BEGIN
    -- Löschen von Bestellpositionen für die angegebene Bestellung
    DELETE FROM Bestellposition
    WHERE Bestellnummer = p_idBestellung;
    -- Löschen der Bestellung
    DELETE FROM Bestellung
    WHERE Bestellnummer = p_idBestellung;
    -- Commit der Transaktion
    COMMIT;
END deleteOrder;
```
```
BEGIN
    deleteOrder(50);
END;
```
c)
```
create or replace VIEW lol
as
Select
    B.Bestellnummer,
    B.Kundennummer,
    B.Bestelldatum,
    BP.Anzahl,
    A.Artikelname,
    A.Preis
From bestellung B
join Bestellposition BP on B.Bestellnummer = BP.Bestellnummer
join artikel A on BP.Artikelnummer = A.Artikelnummer
```