INF.03 · Bazy danych i SQL

INF.03, zadanie SQL 2: turniej e-sportowy

Pełne zadanie praktyczne na poziomie średnim. Baza turnieju wymaga łączenia tabel, kolumn obliczanych, grupowania i HAVING. Najciekawsza pułapka: mecz wskazuje gospodarza i gościa, czyli dwa razy odwołuje się do tej samej tabeli drużyn.

  • 45–60 minut
  • poziom średni
  • baza: inf03_turniej

Po tej lekcji: wykonasz pełne zadanie egzaminacyjne samodzielnie: od importu, przez pięć kwerend, po dokumentację i kartę kontroli.

1 · Sytuacja

Warunki wykonania

Czas orientacyjny: 45–60 minut. Pracuj samodzielnie w XAMPP i phpMyAdmin. Pobierz plik bazy (zip) z sekcji „Pliki do pracy”, rozpakuj go i zaimportuj plik .sql. Nie zmieniaj danych źródłowych poza poleceniami, które tego wyraźnie wymagają.

W katalogu rozwiązania zapisz kwerendy.sql oraz zrzuty kwerenda1.png, kwerenda2.png itd. Baza zawiera drużyny, graczy i mecze. Jeden mecz wskazuje gospodarza i gościa, więc w zapytaniu 2 tabela Druzyny pojawi się dwa razy pod różnymi aliasami.

2 · Do wykonania

Pięć poleceń egzaminacyjnych

Pracuj samodzielnie. Przy każdym poleceniu podano oczekiwany wynik, żebyś mógł sprawdzić się bez zaglądania do rozwiązania.

  1. Wyświetl nick, rolę i nazwę drużyny wszystkich graczy. Posortuj według nazwy drużyny, a potem nicku.
    Oczekiwany wynik12 wierszypierwszy wiersz: Crash · atak · Blue Screen
  2. Wyświetl datę meczu, nazwę gospodarza, nazwę gościa oraz oba wyniki. Użyj dwóch aliasów tej samej tabeli.
    Oczekiwany wynik8 wierszy
  3. Wyświetl mecze, w których łączna liczba punktów była większa niż 4. Dodaj kolumnę suma_punktow.
    Oczekiwany wynik1 wiersz
  4. Dla każdej drużyny pokaż nazwę i liczbę graczy. Wyświetl tylko drużyny mające co najmniej trzech graczy.
    Oczekiwany wynik4 wiersze
  5. Zmień rolę gracza o nicku Patch na „rezerwowy”. Przed UPDATE wykonaj SELECT kontrolny.
    Oczekiwany wynikzmienionych wierszy: 1

3 · Sprawdź się

Czy Twoje wyniki się zgadzają?

To szybka kontrola, a nie ocena. Liczba wierszy jest pierwszym sygnałem, że warunek albo złączenie działa tak, jak trzeba.

Ta interakcja wymaga włączonego JavaScriptu.

4 · Zanim się pomylisz

Typowe błędy w tym zadaniu

Rozwiń każdą z nich.

Jeden alias dla dwóch ról tabeli
Tak nie
JOIN Druzyny d ON m.gospodarz = d.id_druzyny
JOIN Druzyny d ON m.gosc = d.id_druzyny

Błąd Not unique table/alias: 'd'. Obie role tabeli muszą mieć różne aliasy.

Tak
JOIN Druzyny dg ON m.gospodarz = dg.id_druzyny
JOIN Druzyny dc ON m.gosc = dc.id_druzyny

Ta sama tabela w dwóch rolach wymaga dwóch aliasów.

Suma punktów wpisana ręcznie
Tak nie
SELECT ..., 5 AS suma_punktow

Liczba nie zmieni się, gdy zmienią się wyniki meczu.

Tak
punkty_gospodarza + punkty_goscia AS suma_punktow

Kolumna obliczana ma się liczyć sama.

WHERE zamiast HAVING przy liczbie graczy
Tak nie
WHERE COUNT(*) >= 3

Błąd Invalid use of group function.

Tak
GROUP BY ... HAVING COUNT(*) >= 3

Warunek na wynik grupowania to HAVING.

5 · Sprawdź sam siebie

Zanim oddasz pracę

Ta lista odpowiada temu, co sprawdza komisja egzaminacyjna: poprawną bazę, poprawne wyniki i dokumentację.

Podsumowanie

Co warto zapamiętać

  1. Pracuj według procedury: import, struktura, zapytania etapami, kontrola, zapis i ponowne otwarcie.
  2. Przed UPDATE zawsze SELECT z tym samym warunkiem.
  3. Dokumentuj pracę: pliki, zrzuty, liczby rekordów.
  4. Karta kontroli to ostatni krok przed oddaniem.

Dalej na swoim koncie

Rozgrzewki, quiz i zadania są w biurku ucznia.

Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.

Zaloguj się →
Źródła i dalsza nauka