Allekérdezések: SUBSELECT
Eddig a WHERE utáni feltételmegadásban csak viszonylag egyszerű kifejezések szerepeltek. Általában annyi történt,
hogy a forrástáblázat adott sorának adatait megvizsgáltuk, hogy a sor bekerül-e az eredménytáblázatba.
Az adatbázisban tárolt adatok között bonyolultabb összefüggések vizsgálatára a SUBSELECT használatával van lehetőség.
A SUBSELECT egy olyan kifejezésekben használható SELECT utasítás, amely értéke(ke)t ad át annak az utasításnak, amely használja.
A SUBSELECT formailag egy teljes SELECT utasítás egyszerűbb változata, eredménye egy érték, vagy egy értékek sorozata.
Pl.: Raktar (raktarkod, gyartokod, megnevezes, egysegar, keszlet)
Válasszuk ki a raktárból a legkisebb egységárú áruféleséget allekérdezés segítségével.
SELECT * FROM Raktar WHERE egysegar=(SELECT MIN(egysegar) FROM Raktar
Abban az esetben, ha a SUBSELECT egynél több értéket ad vissza , akkor az előző leírás többnyire hibajelzést ad vissza.
Ekkor másképpen fogalmazzuk meg a SUBSELECT-et : = helyett IN (ez pl. a min fgv. esetében nem fordulhat elő)
SELECT * FROM Raktar WHERE egysegar IN (SELECT MIN(egysegar) FROM Raktar
Válasszuk ki a raktárból az átlagosnál olcsóbb árukat!
SELECT * FROM Raktar WHERE egysegar < (SELECT AVG(egysegar) FROM Raktar)
$$\ \ $$
Gyakorlás: - Árpád-ház
Feladatok: Dolgozz a kiralyaink adatbázis Csalad táblájával!
- Ki volt IV. István nagyapja? (Istvan_nagyapja)
-
Hány király uralkodott még II. Géza után? (Geza_utan)
-
Hány unokája volt Vazulnak? (Vazul)
-
Készíts lekérdezést az Árpád-ház azon tagjairól, akiknek Vak Béla volt a nagypapája! (unokak)
-
Kik azok a királyok, akiknek az apja is király volt? (kiralyfiak)
-
Kik azok a királyok akiknek a nagyapja király volt?(Nagypapa_kiraly)
$$\ \ $$