←← →→

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

Marika néni virágboltja

SQL
Nehézség: Könnyű

Marika néni virágboltjában szeretnének egy egyszerű nyilvántartást készíteni a csokrokról, a vevőkről és a kiszállításokról. Készítse el az adatbázist, a táblákat és a feltöltést, majd oldja meg a feladatokat SQL-lel.

-- Adatbázis és táblák létrehozása
CREATE DATABASE viragbolt;
USE viragbolt;

CREATE TABLE vasarlok (
vasarlo_id INT PRIMARY KEY,
nev VARCHAR(100) NOT NULL,
telefonszam VARCHAR(20),
varos VARCHAR(50) NOT NULL
);

CREATE TABLE termekek (
termek_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,
vasarlo_id INT NOT NULL,
termek_id INT NOT NULL,
mennyiseg INT NOT NULL,
datum DATE NOT NULL,
FOREIGN KEY (vasarlo_id) REFERENCES vasarlok(vasarlo_id),
FOREIGN KEY (termek_id) REFERENCES termekek(termek_id)
);

-- Feltöltő script
INSERT INTO vasarlok (vasarlo_id, nev, telefonszam, varos) VALUES
(1, 'Kiss Anna', '30-111-1111', 'Szeged'),
(2, 'Nagy Péter', '30-222-2222', 'Budapest'),
(3, 'Tóth Lili', '30-333-3333', 'Debrecen'),
(4, 'Farkas János', '30-444-4444', 'Szeged');

INSERT INTO termekek (termek_id, nev, tipus, ar) VALUES
(1, 'Rózsacsokor', 'csokor', 4500),
(2, 'Tulipáncsokor', 'csokor', 3200),
(3, 'Orchidea', 'virág', 6800),
(4, 'Bögrés növény', 'ajándék', 5900);

INSERT INTO rendelesek (rendeles_id, vasarlo_id, termek_id, mennyiseg, datum) VALUES
(1, 1, 1, 2, '2026-03-01'),
(2, 2, 3, 1, '2026-03-02'),
(3, 3, 2, 4, '2026-03-02'),
(4, 1, 4, 1, '2026-03-03'),
(5, 4, 1, 1, '2026-03-04');

-- Feladatok:
-- 1. Listázza ki az összes vásárló nevét és városát.
-- 2. Listázza ki az összes különböző terméktípust.
-- 3. Kérdezze le azoknak a vásárlóknak a nevét, akik Szegedről rendeltek.
-- 4. Írjon lekérdezést, amely megmondja, hány darab rendeléssel szerepel minden vásárló.


MegoldásMegoldási ötletek:
1. SELECT nev, varos FROM vasarlok;
2. SELECT DISTINCT tipus FROM termekek;
3. SELECT DISTINCT v.nev FROM vasarlok v JOIN rendelesek r ON v.vasarlo_id = r.vasarlo_id WHERE v.varos = 'Szeged';
4. SELECT v.nev, COUNT(*) AS rendelesek_szama FROM vasarlok v JOIN rendelesek r ON v.vasarlo_id = r.vasarlo_id GROUP BY v.nev;