Fórum (2025. október)
Kategória: sql - emelt szint
Feladat leírása
Egy internetes fórum adatbázisának egy részlete áll rendelkezésre. A fórum regisztrált
felhasználóinak és egy tavalyi nap hírfolyamokba rendezett üzeneteinek adatait kell elemeznie
a feladat megoldása során.
Az adatbázis a fórummal kapcsolatos következő táblákat tartalmazza:
Táblák:
felhasznalo (id, veznev, utonev, email, utolso)
| id | A regisztrált felhasználó azonosítója (szám), ez az elsődleges kulcs |
| veznev | A felhasználó vezetékneve (szöveg), névrokonok előfordulnak az adatbázisban |
| utonev | A felhasználó utóneve (szöveg) |
| A felhasználó e-mail-címe (szöveg) | |
| utolso | A vizsgált nap előtti utolsó hozzászólás dátuma (dátum) |
uzenet (id, tartalom, f_id, h_id, kuldido)
| id | Az üzenet azonosítója (szám), ez az elsődleges kulcs |
| tartalom | Az üzenet szövegének bevezető, rövid részlete (szöveg) |
| f_id | Az üzenet küldőjének azonosítója (szám), idegen kulcs |
| h_id | Az üzenet hírfolyamának azonosítója (szám), idegen kulcs |
| kuldido | A vizsgált napon az üzenet küldésének időpontja (idő) |
hirfolyam (id, megnevezes, moderator)
| id | A hírfolyam azonosítója (szám), ez az elsődleges kulcs |
| megnevezes | A hírfolyam címe, témája (szöveg), például: kerékpáros KRESZ, túrakerékpár |
| moderator | Annak a felhasználónak az azonosítója, aki az adott hírfolyam moderátora (szám), idegen kulcs |

A következő feladatokat megoldó SQL-parancsokat rögzítse a feladatok végén zárójelben
megadott nevű és .sql kiterjesztésű szöveges állományba! Például a 3. feladat megoldása
a 3csakegy.sql nevű állományba kerüljön! A javítás során csak ezeknek az állományoknak
a tartalmát értékelik. Ügyeljen arra, hogy a lekérdezésekben pontosan a kívánt mezők
szerepeljenek, felesleges mezőt ne jelenítsen meg!
Az adatbázist és a táblákat létrehozó, valamint az adatokat a táblába beszúró SQL-parancsokat
a forum.sql állomány tartalmazza.
Részfeladatok
1. Futtassa az SQL-szerveren a forum.sql parancsfájlt, és a továbbiakban a forum adatbázisban dolgozzon! (A „Nincs kiválasztott adatbázis” üzenet nem befolyásolja az adatimportálás sikerességét.)
2. Lekérdezés segítségével írassa ki a hírfolyamok megnevezését, valamint a moderátoruk vezeték- és utónevét az e-mail-címükkel együtt! (2felelos)
3. Az adatbázis a kerékpáros közlekedéssel kapcsolatos fórum adatait tartalmazza. Lekérdezés segítségével írassa ki azoknak az üzeneteknek a tartalmát, amelyekben szerepel a „bike” vagy a „bicikli” szó vagy szórészlet! (3hajtas)
4. Adja meg lekérdezéssel a névrokon felhasználók vezeték- és utónevét! A névrokonok vezeték- és utóneve is azonos, de ők különböző személyek. A listában minden név ábécésorrendben jelenjen meg, de csak egyszer! (4nevrokon)
5. Készítsen lekérdezést, amely meghatározza, hogy hírfolyamonként hány üzenet érkezett a fórumba! A hírfolyamok neve és az üzenetek száma jelenjen meg, utóbbi szerint csökkenő sorrendben! (5forgalom)
6. SQL-ben szövegeket a Concat függvénnyel lehet összefűzni. Az alábbi példa mutatja a használatát:
a) Concat('abc', 'de', 'f') eredménye 'abcdef'
b) A következő feladat megoldásánál használhatja ezt a függvényt.
7. Vannak olyan hozzászólások, amelyek bevezető szövege valamelyik hírfolyam címét (nem feltétlenül azt, amelyikben megjelent) is tartalmazza. Adja meg lekérdezés segítségével az ilyen üzenetet küldők vezeték- és utónevét, a hozzászólásuk bevezető szövegét és küldési idejét! (6cimtartalom)
8. Lekérdezés segítségével írassa ki, hogy a vizsgált napon hány felhasználó szólt hozzá a fórumhoz! A többször is hozzászólókat csak egyszer vegye figyelembe! (7napiszam)
9. A fórumnak vannak olyan tagjai, akik már nem aktívak, azaz régóta nem szóltak hozzá. Készítsen lekérdezést, amely meghatározza azoknak a vezeték- és utónevét, akik utoljára 2010 előtt szóltak hozzá, és a vizsgált napon sem küldtek üzenetet! (8inaktivak)
10. Adja meg lekérdezéssel azoknak a felhasználóknak a vezeték- és utónevét, valamint üzeneteik számát, akik az „e-bike” hírfolyamban írtak ezen a napon 12:00 és 16:00 óra között, a határokat is beleszámolva! (9elektromos)
11. Lekérdezés segítségével írassa ki, hogy a vizsgált napi első üzenet írója aznap milyen időpontban küldte be az utolsó üzenetét! Feltételezhetjük azt, hogy az elsőként érkezett üzenettel egyidőben másik üzenet nem érkezett. (10kezdo)