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.
-
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
-
Wyświetl datę meczu, nazwę gospodarza, nazwę gościa oraz oba wyniki. Użyj dwóch aliasów tej samej tabeli.Oczekiwany wynik8 wierszy
-
Wyświetl mecze, w których łączna liczba punktów była większa niż 4. Dodaj kolumnę
suma_punktow.Oczekiwany wynik1 wiersz -
Dla każdej drużyny pokaż nazwę i liczbę graczy. Wyświetl tylko drużyny mające co najmniej trzech graczy.Oczekiwany wynik4 wiersze
-
Zmień rolę gracza o nicku Patch na „rezerwowy”. Przed
UPDATEwykonajSELECTkontrolny.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.
4 · Zanim się pomylisz
Typowe błędy w tym zadaniu
Rozwiń każdą z nich.
Jeden alias dla dwóch ról tabeli
JOIN Druzyny d ON m.gospodarz = d.id_druzyny
JOIN Druzyny d ON m.gosc = d.id_druzynyBłąd Not unique table/alias: 'd'. Obie role tabeli muszą mieć różne aliasy.
JOIN Druzyny dg ON m.gospodarz = dg.id_druzyny
JOIN Druzyny dc ON m.gosc = dc.id_druzynyTa sama tabela w dwóch rolach wymaga dwóch aliasów.
Suma punktów wpisana ręcznie
SELECT ..., 5 AS suma_punktowLiczba nie zmieni się, gdy zmienią się wyniki meczu.
punkty_gospodarza + punkty_goscia AS suma_punktowKolumna obliczana ma się liczyć sama.
WHERE zamiast HAVING przy liczbie graczy
WHERE COUNT(*) >= 3Błąd Invalid use of group function.
GROUP BY ... HAVING COUNT(*) >= 3Warunek 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ć
- Pracuj według procedury: import, struktura, zapytania etapami, kontrola, zapis i ponowne otwarcie.
- Przed
UPDATEzawszeSELECTz tym samym warunkiem. - Dokumentuj pracę: pliki, zrzuty, liczby rekordów.
- 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ę →