←← →→

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 könyvesbolt készlete

SQL
Nehézség: Gondolkodtató

Egy könyvesboltban a könyveket, szerzőket és készleteket kell kezelni. Az adatbázis alapján válaszoljon a feladatokra, amelyek már több tábla összekapcsolását is igénylik.

CREATE TABLE szerzok (
szerzo_id INT PRIMARY KEY,
nev VARCHAR(100) NOT NULL,
orszag VARCHAR(50) NOT NULL
);

CREATE TABLE konyvek (
konyv_id INT PRIMARY KEY,
szerzo_id INT NOT NULL,
cim VARCHAR(150) NOT NULL,
mufaj VARCHAR(50) NOT NULL,
ar INT NOT NULL,
FOREIGN KEY (szerzo_id) REFERENCES szerzok(szerzo_id)
);

CREATE TABLE keszlet (
konyv_id INT PRIMARY KEY,
peldanyszam INT NOT NULL,
FOREIGN KEY (konyv_id) REFERENCES konyvek(konyv_id)
);

INSERT INTO szerzok (szerzo_id, nev, orszag) VALUES
(1, 'Móricz Zsigmond', 'Magyarország'),
(2, 'Agatha Christie', 'Egyesült Királyság'),
(3, 'Jules Verne', 'Franciaország'),
(4, 'Rejtő Jenő', 'Magyarország');

INSERT INTO konyvek (konyv_id, szerzo_id, cim, mufaj, ar) VALUES
(1, 1, 'Légy jó mindhalálig', 'regény', 3900),
(2, 2, 'Tíz kicsi néger', 'krimi', 4600),
(3, 3, 'A rejtelmes sziget', 'regény', 4200),
(4, 4, 'A három testőr Afrikában', 'humor', 3500),
(5, 2, 'Gyilkosság az Orient expresszen', 'krimi', 4800);

INSERT INTO keszlet (konyv_id, peldanyszam) VALUES
(1, 5),
(2, 2),
(3, 7),
(4, 4),
(5, 1);

-- Feladatok:
-- 1. Listázza ki az összes könyvcímet és a hozzájuk tartozó szerző nevét.
-- 2. Kérdezze le az összes különböző műfajt.
-- 3. Listázza ki azokat a könyveket, amelyekből legalább 4 példány van raktáron.
-- 4. Írja ki, mely szerzők könyvei szerepelnek a boltban.


MegoldásMegoldási ötletek:
1. SELECT k.cim, s.nev FROM konyvek k JOIN szerzok s ON k.szerzo_id = s.szerzo_id;
2. SELECT DISTINCT mufaj FROM konyvek;
3. SELECT k.cim FROM konyvek k JOIN keszlet ke ON k.konyv_id = ke.konyv_id WHERE ke.peldanyszam >= 4;
4. SELECT DISTINCT s.nev FROM szerzok s JOIN konyvek k ON s.szerzo_id = k.szerzo_id;