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!

  1.   Ki volt IV. István nagyapja? (Istvan_nagyapja)
  2.   Hány király uralkodott még II. Géza után? (Geza_utan)
  3.   Hány unokája volt Vazulnak? (Vazul)
  4.   Készíts lekérdezést az Árpád-ház azon tagjairól, akiknek Vak Béla volt a nagypapája! (unokak)

  5.   Kik azok a királyok, akiknek az apja is király volt? (kiralyfiak)
  6.   Kik azok a királyok akiknek a nagyapja király volt?(Nagypapa_kiraly)
$$\ \ $$