W tym typie zadania kluczowe jest rozpoznanie, że mamy relację pomiędzy trzema tabelami, gdzie Zapisy zwykle pełni rolę tabeli pośredniej (łączącej studentów z zajęciami). Aby uzyskać wynik "nazwisko studenta + idZajecia", kwerenda musi spełnić trzy warunki:
- Projekcja: w SELECT wskazujemy wyłącznie wymagane kolumny, np. Studenci.nazwisko oraz Zapisy.idZajecia (albo kolumnę identyfikatora zajęć z tabeli Zajecia – zależnie od schematu).
- Poprawne łączenie: potrzebne są JOIN-y zgodne z kluczami obcymi, typowo: Studenci łączy się z Zapisy po identyfikatorze studenta, a Zapisy łączy się z Zajecia po identyfikatorze zajęć.
- Filtrowanie: klauzula WHERE ogranicza rekordy do studentów z grupy 15, np. warunkiem na kolumnie grupy w tabeli Studenci.
Poprawny schemat zapytania ma więc postać: SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ... WHERE grupa = 15. Zwróć uwagę na spójność aliasów: jeśli tabela Zapisy ma alias ZP, to w SELECT i warunkach JOIN trzeba konsekwentnie używać ZP, a nie mieszać go z innym aliasem.
Dlaczego typowe odpowiedzi błędne odpadają? Zapytanie bez JOIN do tabeli Zapisy nie potrafi wiarygodnie powiązać studentów z zajęciami. Zapytanie bez WHERE zwróci dane dla wszystkich grup. Z kolei użycie niewłaściwych kolumn w warunkach łączenia (np. łączenie nazwiska z id) może dać losowe, "puste" lub zwielokrotnione wyniki (kartowanie), co jest częstą pułapką na egzaminie.
W praktyce egzaminacyjnej warto najpierw wypisać: (1) jakie kolumny mają być w wyniku, (2) przez jakie klucze tabele się łączą, (3) jaki filtr ogranicza zbiór. Dopiero potem składać składnię SQL.