←← →→

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

A pékség, ahol a kiflik is önérzetesek

SQL
Nehézség: Gondolkodtató

Egy kedves pékségben a pékek, a termékek és a napi eladások szerepelnek az adatbázisban. A feladatok kicsit összetettebbek, de még mindig barátságosak és jól gyakorolhatók.

CREATE TABLE pekek (
pek_id INT PRIMARY KEY,
nev VARCHAR(100) NOT NULL,
becenev VARCHAR(50) NOT NULL
);

CREATE TABLE termekek (
termek_id INT PRIMARY KEY,
nev VARCHAR(100) NOT NULL,
kategoria VARCHAR(50) NOT NULL,
ar INT NOT NULL
);

CREATE TABLE eladasok (
eladas_id INT PRIMARY KEY,
pek_id INT NOT NULL,
termek_id INT NOT NULL,
darab INT NOT NULL,
FOREIGN KEY (pek_id) REFERENCES pekek(pek_id),
FOREIGN KEY (termek_id) REFERENCES termekek(termek_id)
);

INSERT INTO pekek (pek_id, nev, becenev) VALUES
(1, 'Béla bácsi', 'KifliKirály'),
(2, 'Erika néni', 'ZsemleZsonglőr'),
(3, 'Tamás', 'SütisTomi');

INSERT INTO termekek (termek_id, nev, kategoria, ar) VALUES
(1, 'Kakaós csiga', 'édes', 450),
(2, 'Lángos', 'sós', 700),
(3, 'Mákos bejgli', 'édes', 1200),
(4, 'Sajtos pogácsa', 'sós', 300);

INSERT INTO eladasok (eladas_id, pek_id, termek_id, darab) VALUES
(1, 1, 1, 10),
(2, 1, 4, 20),
(3, 2, 2, 15),
(4, 2, 4, 12),
(5, 3, 3, 8),
(6, 3, 1, 6);

-- Feladatok:
-- 1. Listázza ki a pékek nevét és becenevét.
-- 2. Kérdezze le az összes különböző termékkategóriát.
-- 3. Írja ki, mely termékekből adtak el legalább 10 darabot egy-egy sorban.
-- 4. Számolja ki minden pék összes eladott darabszámát.
-- 5. Kérdezze le, mely pékek adtak el édes terméket.


MegoldásMegoldási ötletek:
1. SELECT nev, becenev FROM pekek;
2. SELECT DISTINCT kategoria FROM termekek;
3. SELECT nev FROM termekek WHERE termek_id IN (SELECT termek_id FROM eladasok WHERE darab >= 10);
4. SELECT p.nev, SUM(e.darab) AS ossz_darab FROM pekek p JOIN eladasok e ON p.pek_id = e.pek_id GROUP BY p.nev;
5. SELECT DISTINCT p.nev FROM pekek p JOIN eladasok e ON p.pek_id = e.pek_id JOIN termekek t ON e.termek_id = t.termek_id WHERE t.kategoria = 'édes';