Od pytań do tabel

Projekt: baza szkolnego koła - Bazy danych: tabele, relacje i kwerendy (SQL (SQLite))

Szkolne koło zainteresowań chce wiedzieć, **kto chodzi na jakie zajęcia** i **kto je prowadzi**. Stąd trzy tabele: `uczniowie`, `zajecia` (z prowadzącym) i `zapisy`, która łączy ucznia z zajęciami. Jeden uczeń może chodzić na wiele zajęć, a na zajęcia chodzi wielu uczniów: to relacja **wiele do wielu**, zapisana tabelą pośrednią z dwoma kluczami obcymi.

CREATE TABLE uczniowie (
  id INTEGER PRIMARY KEY,
  imie TEXT NOT NULL,
  klasa TEXT NOT NULL
);

CREATE TABLE zajecia (
  id INTEGER PRIMARY KEY,
  nazwa TEXT NOT NULL,
  prowadzacy TEXT NOT NULL
);

CREATE TABLE zapisy (
  uczen_id INTEGER NOT NULL REFERENCES uczniowie(id),
  zajecia_id INTEGER NOT NULL REFERENCES zajecia(id),
  PRIMARY KEY (uczen_id, zajecia_id)
);

INSERT INTO uczniowie (imie, klasa) VALUES ('Ola', '1a'), ('Kuba', '1b'), ('Zuzia', '1a');
INSERT INTO zajecia (nazwa, prowadzacy) VALUES ('robotyka', 'p. Nowak'), ('szachy', 'p. Lis');
INSERT INTO zapisy VALUES (1, 1), (1, 2), (2, 1), (3, 2);

SELECT zajecia.nazwa, COUNT(zapisy.uczen_id) AS uczestnikow
FROM zajecia
JOIN zapisy ON zapisy.zajecia_id = zajecia.id
GROUP BY zajecia.nazwa;

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Bazy danych: tabele, relacje i kwerendy·Zaloguj się, aby zapisać postęp na koncie.