←← →→

C99.hu

Egy gondolkodtató gyakorló feladatokból álló gyűjtemény. Főbb témák a nyelvspecifikus programozás és a matematika.

Főoldal

Az iskola menzája

SQL
Nehézség: Könnyű

Az iskola menzáján egyszerűen szeretnék nyilvántartani a diákokat, az ételeket és a rendeléseket. Készítse el az adatbázist, töltse fel a mintát, majd oldja meg az alap SQL feladatokat.

CREATE TABLE diakok (
diak_id INT PRIMARY KEY,
nev VARCHAR(100) NOT NULL,
osztaly VARCHAR(10) NOT NULL
);

CREATE TABLE etelek (
etel_id INT PRIMARY KEY,
nev VARCHAR(100) NOT NULL,
tipus VARCHAR(50) NOT NULL,
ar INT NOT NULL
);

CREATE TABLE rendelesek (
rendeles_id INT PRIMARY KEY,
diak_id INT NOT NULL,
etel_id INT NOT NULL,
mennyiseg INT NOT NULL,
FOREIGN KEY (diak_id) REFERENCES diakok(diak_id),
FOREIGN KEY (etel_id) REFERENCES etelek(etel_id)
);

INSERT INTO diakok (diak_id, nev, osztaly) VALUES
(1, 'Szabó Anna', '11.A'),
(2, 'Tóth Máté', '10.B'),
(3, 'Kiss Luca', '11.A'),
(4, 'Nagy Bence', '12.C');

INSERT INTO etelek (etel_id, nev, tipus, ar) VALUES
(1, 'Makaróni', 'főétel', 1200),
(2, 'Paradicsomleves', 'leves', 700),
(3, 'Sajtos szendvics', 'snack', 900),
(4, 'Almás pite', 'desszert', 600);

INSERT INTO rendelesek (rendeles_id, diak_id, etel_id, mennyiseg) VALUES
(1, 1, 1, 1),
(2, 2, 2, 1),
(3, 1, 4, 2),
(4, 3, 3, 1),
(5, 4, 1, 2);

-- Feladatok:
-- 1. Listázza ki az összes diák nevét és osztályát.
-- 2. Listázza ki az összes különböző ételtípust.
-- 3. Kérdezze le azoknak a diákoknak a nevét, akik rendeltek makarónit.
-- 4. Írjon lekérdezést, amely megadja, hány rendelése van minden diáknak.


MegoldásMegoldási ötletek:
1. SELECT nev, osztaly FROM diakok;
2. SELECT DISTINCT tipus FROM etelek;
3. SELECT DISTINCT d.nev FROM diakok d JOIN rendelesek r ON d.diak_id = r.diak_id JOIN etelek e ON r.etel_id = e.etel_id WHERE e.nev = 'Makaróni';
4. SELECT d.nev, COUNT(*) AS rendelesek_szama FROM diakok d JOIN rendelesek r ON d.diak_id = r.diak_id GROUP BY d.nev;