Tworzenie zapytań do bazy danych
12. Znajdź gracza z największą liczbą wygranych
Zadanie: Wyświetl gracza, który wygrał najwięcej meczów.
Rozwiązanie
SELECT gracze.nazwa, COUNT(mecze.id) AS wygrane
FROM gracze
JOIN mecze ON gracze.id = mecze.id_gracza
WHERE mecze.wygrana = 1
GROUP BY gracze.nazwa
ORDER BY wygrane DESC
LIMIT 1;
13. Utwórz widok najlepszych graczy
Zadanie: Utwórz widok top_gracze
wyświetlający graczy z co najmniej 10 wygranymi.
Rozwiązanie
CREATE VIEW top_gracze AS
SELECT gracze.nazwa, COUNT(mecze.id) AS wygrane
FROM gracze
JOIN mecze ON gracze.id = mecze.id_gracza
WHERE mecze.wygrana = 1
GROUP BY gracze.nazwa
HAVING wygrane >= 10;
14. Procedura resetująca punkty graczy
Zadanie: Napisz procedurę, która zresetuje punkty wszystkich graczy do zera.
Rozwiązanie
DELIMITER //
CREATE PROCEDURE reset_punkty()
BEGIN
UPDATE gracze SET punkty = 0;
END //
DELIMITER ;
15. Wyzwalacz przy dodaniu nowego meczu
Zadanie: Napisz wyzwalacz, który przy dodaniu nowego meczu automatycznie zwiększy liczbę rozegranych meczów drużyny.
Rozwiązanie
CREATE TRIGGER aktualizuj_mecze
AFTER INSERT ON mecze
FOR EACH ROW
BEGIN
UPDATE druzyny
SET rozegrane_mecze = rozegrane_mecze + 1
WHERE id = NEW.id_druzyny;
END;