
Kutyaaktivitás_2023_majus_középszint
Kutyaaktivitás_2023_majus_középszint
1. Adatbázis és táblák létrehozása
Először hozzuk létre az adatbázist kutyaaktivitas néven, majd importáljuk a fájlokat a megfelelő táblákba.
Adatbázis létrehozása:
CREATE DATABASE kutyaaktivitas;
USE kutyaaktivitas;
Táblák létrehozása:
- kutya tábla:j
CREATE TABLE kutya (
id INT AUTO_INCREMENT PRIMARY KEY,
nev VARCHAR(255) UNIQUE NOT NULL,
szuldatum DATE NOT NULL,
kan BOOLEAN NOT NULL,
ivartalanitott BOOLEAN NOT NULL,
testtomeg INT NOT NULL,
kaloria INT NOT NULL
);
- aktivitas tábla:
CREATE TABLE aktivitas (
id INT AUTO_INCREMENT PRIMARY KEY,
datum DATE NOT NULL,
kutyaid INT,
razas BOOLEAN NOT NULL,
vakarozas BOOLEAN NOT NULL,
ugatas INT NOT NULL,
kaloria INT NOT NULL,
alvas INT NOT NULL,
FOREIGN KEY (kutyaid) REFERENCES kutya(id)
);
Táblák importálása:
A phpMyAdmin segítségével importálhatjuk a két szöveges fájlt (kutya.txt, aktivitas.txt). Győződjünk meg róla, hogy a fájlok UTF-8 kódolásúak és tabulátorokkal vannak tagolva.
- Nyissuk meg a phpMyAdmin felületet.
- Válasszuk ki az kutyaaktivitas adatbázist.
- Kattintsunk az "Importálás" fülre.
- Töltsük fel a fájlokat (kutya.txt és aktivitas.txt), és biztosítsuk, hogy a fájlok tabulátorral tagoltak és UTF-8 kódolásúak.
2. Lekérdezések megoldása
Most készítsük el a kért lekérdezéseket:
2. Ábécérendben az ivartalanított szukák nevei:
SELECT nev
FROM kutya
WHERE ivartalanitott = TRUE AND kan = FALSE
ORDER BY nev;
3. Kutyák, akiknél volt olyan nap, amikor alvásuk legfeljebb 80 pontot ért el és rázás vagy vakarózás is történt:
SELECT DISTINCT k.nev
FROM kutya k
JOIN aktivitas a ON k.id = a.kutyaid
WHERE a.alvas <= 80 AND (a.razas = TRUE OR a.vakarozas = TRUE);
4. A ".Husi" nevű kutya, aki augusztusban több energiát használt fel, mint a normális napi energiaigénye:
SELECT COUNT(*) AS augusztusi_napok
FROM aktivitas a
JOIN kutya k ON a.kutyaid = k.id
WHERE k.nev = '.Husi'
AND MONTH(a.datum) = 8
AND a.kaloria > k.kaloria;
5. Legutoljára használt aktivitásmérővel rendelkező kutya:
SELECT k.nev, MIN(a.datum) AS elso_hasznalat
FROM kutya k
JOIN aktivitas a ON k.id = a.kutyaid
GROUP BY k.id
ORDER BY elso_hasznalat DESC
LIMIT 1;