Ćwiczenia 16-20: Płatności i Kupony Rabatowe
Ćwiczenie 16: Dodanie tabeli płatności
Rozwiązanie
CREATE TABLE platnosci (
id_platnosci INT AUTO_INCREMENT PRIMARY KEY,
id_zamowienia INT,
data_platnosci DATE,
kwota DECIMAL(10,2),
metoda_platnosci ENUM('Gotówka', 'Karta', 'Przelew'),
FOREIGN KEY (id_zamowienia) REFERENCES zamowienia(id_zamowienia)
);
Ćwiczenie 17: Dodanie historii zamówień
Rozwiązanie
CREATE TABLE historia_zamowien (
id_historii INT AUTO_INCREMENT PRIMARY KEY,
id_zamowienia INT,
zmiana_statusu ENUM('Nowe', 'W realizacji', 'Zakończone', 'Anulowane'),
data_zmiany TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (id_zamowienia) REFERENCES zamowienia(id_zamowienia)
);
Ćwiczenie 18: Wyświetlanie 10 najdroższych zamówień
Rozwiązanie
SELECT * FROM zamowienia
ORDER BY wartosc_zamowienia DESC
LIMIT 10;
Ćwiczenie 19: Dodanie kuponów rabatowych
Rozwiązanie
CREATE TABLE kupony (
id_kuponu INT AUTO_INCREMENT PRIMARY KEY,
kod_kuponu VARCHAR(50),
rabat DECIMAL(5,2),
data_waznosci DATE
);
Ćwiczenie 20: Powiązanie kuponów z zamówieniami
Rozwiązanie
ALTER TABLE zamowienia ADD COLUMN id_kuponu INT;
ALTER TABLE zamowienia ADD FOREIGN KEY (id_kuponu) REFERENCES kupony(id_kuponu);
Ćwiczenia 21-24: Aktualizacja i Rabaty
Ćwiczenie 21: Aktualizacja ceny produktu
Rozwiązanie
UPDATE produkty
SET cena = cena * 1.1
WHERE kategoria = 'Elektronika';
Ćwiczenie 22: Zliczanie liczby produktów w zamówieniu
Rozwiązanie
SELECT z.id_zamowienia, COUNT(p.id_produktu) AS liczba_produktow
FROM zamowienia z
JOIN szczegoly_zamowienia sz ON z.id_zamowienia = sz.id_zamowienia
JOIN produkty p ON sz.id_produktu = p.id_produktu
GROUP BY z.id_zamowienia;
Ćwiczenie 23: Wyświetlanie zamówień z rabatem
Rozwiązanie
SELECT z.id_zamowienia, z.wartosc_zamowienia, k.rabat
FROM zamowienia z
JOIN klienci k ON z.id_klienta = k.id_klienta
WHERE k.rabat > 0;
Ćwiczenie 24: Usuwanie kuponów wygasłych
Rozwiązanie
DELETE FROM kupony
WHERE data_waznosci < CURDATE();
Ćwiczenie 25: Procedura dodawania produktu do zamówienia
Ćwiczenie 25: Procedura dodawania produktu do zamówienia
Rozwiązanie
DELIMITER //
CREATE PROCEDURE DodajProduktDoZamowienia(IN zamowienie_id INT, IN produkt_id INT, IN ilosc INT)
BEGIN
INSERT INTO szczegoly_zamowienia (id_zamowienia, id_produktu, ilosc)
VALUES (zamowienie_id, produkt_id, ilosc);
END //
DELIMITER ;