Ćwiczenia SQL - Sklep Internetowy

Ć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 ;