Bejelentkezés Microsoft-fiókkal
Jelentkezzen be, vagy hozzon létre egy fiókot.
Üdvözöljük!
Válasszon másik fiókot.
Több fiókja van
Válassza ki a bejelentkezéshez használni kívánt fiókot.

Előfordulhat, hogy egy lekérdezés eredményeit egy másik lekérdezés mezőjeként vagy egy lekérdezésmező feltételeként szeretné használni. Tegyük fel például, hogy meg szeretné tekinteni az egyes termékek megrendelései közötti intervallumot. Ha ezt az intervallumot megjelenítő lekérdezést szeretne létrehozni, össze kell hasonlítania az egyes rendelési dátumokat az adott termékhez tartozó többi rendelési dátummal. Ezeknek a rendelési dátumoknak az összehasonlításához lekérdezésre is szükség van. Ezt a lekérdezést beágyazhatja a fő lekérdezésbe egy segédlekérdezés használatával.

A SQL nézetkifejezés vagy Structured Query Language (SQL) utasításában is írhat segéd lekérdezéseket.

A témakör tartalma

Lekérdezés eredményeinek használata mezőként egy másik lekérdezésben

Mezőaliasként al lekérdezéseket is használhat. Ha a segéd lekérdezés eredményeit mezőként szeretné használni a fő lekérdezésben, használjon mezőaliasként egy segéd lekérdezést.

Megjegyzés: A mezőaliasként használt segéd lekérdezések nem adhatnak vissza egynél több mezőt.

A subquery mezőaliasával megjelenítheti azokat az értékeket, amelyek az aktuális sor más értékeitől függenek, ami nem lehetséges segéd lekérdezések használata nélkül.

Térjünk vissza például arra a példára, ahol látni szeretné az egyes termékek megrendelései közötti intervallumot. Az intervallum meghatározásához össze kell hasonlítania az egyes rendelési dátumokat az adott termékhez tartozó többi megrendelési dátummal. A Northwind adatbázissablonnal létrehozhat egy olyan lekérdezést, amely megjeleníti ezeket az információkat.

  1. A Fájl lapon kattintson az Új parancsra.

  2. Az Elérhető sablonok területen kattintson a Mintasablonok elemre.

  3. Kattintson a Northwind, majd a Létrehozás gombra.

  4. A Northwind Traders lapon (a Kezdőképernyő objektumlapon) látható utasításokat követve nyissa meg az adatbázist, majd zárja be a Bejelentkezési párbeszédpanelt.

  5. Kattintson a Létrehozás lap Lekérdezések csoportjának Lekérdezéstervező gombjára.

  6. Kattintson a Lekérdezések fülre, majd kattintson duplán a Termékrendelések elemre.

  7. Kattintson duplán a Termékazonosító mezőre és a Rendelés dátuma mezőre, hogy hozzáadja őket a lekérdezés tervezőrácsához.

  8. A rács Termékazonosító oszlopának Rendezés sorában válassza a Növekvő lehetőséget.

  9. A rács Rendelés dátuma oszlopának Rendezés sorában válassza a Csökkenő lehetőséget.

  10. A rács harmadik oszlopában kattintson a jobb gombbal a Mező sorra, majd kattintson a helyi menü Nagyítás parancsára.

  11. A Nagyítás párbeszédpanelen írja be vagy illessze be a következő kifejezést:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

    Ez a kifejezés a segéd lekérdezés. Az albekérdezés minden sorhoz kiválasztja a legutóbbi rendelési dátumot, amely kevésbé friss, mint a sorhoz már társított rendelési dátum. Figyelje meg, hogy az AS kulcsszóval hogyan hozhat létre táblaaliasokat, hogy összehasonlíthassa a segéd lekérdezés értékeit a fő lekérdezés aktuális sorában lévő értékekkel.

  12. A rács negyedik oszlopában a Mező sorba írja be a következő kifejezést:

    Interval: [Order Date]-[Prior Date]

    Ez a kifejezés kiszámítja az egyes rendelési dátumok és a termék korábbi megrendelési dátuma közötti intervallumot, egy segéd lekérdezéssel definiált korábbi dátum értékével.

  13. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

    1. A lekérdezés lefut, és megjeleníti a terméknevek, rendelési dátumok, korábbi rendelési dátumok és a rendelési dátumok közötti intervallumok listáját. Az eredményeket először a termékazonosító (növekvő sorrend), majd a Rendelés dátuma (csökkenő sorrend) szerint rendezi a rendszer.

    2. Megjegyzés: Mivel a Termékazonosító egy keresőmező, az Access alapértelmezés szerint a tényleges termékazonosítók helyett a keresési értékeket (ebben az esetben a terméknevet) jeleníti meg. Bár ez módosítja a megjelenő értékeket, nem változtatja meg a rendezési sorrendet.

  14. Zárja be a Northwind-adatbázist.

Vissza a lap tetejére

Segéd lekérdezés használata feltételként egy lekérdezésmezőhöz

A segéd lekérdezéseket mezőfeltételként is használhatja. Ha a részkikérdezés eredményeivel korlátozni szeretné a mező által megjelenített értékeket, használjon segéd lekérdezést mezőfeltételként.

Tegyük fel például, hogy a nem értékesítési képviselők által feldolgozott megrendelések listáját szeretné áttekinteni. A lista létrehozásához össze kell hasonlítania az egyes megrendelések alkalmazotti azonosítóját azoknak az alkalmazottaknak az azonosítóival, akik nem értékesítési képviselők. A lista létrehozásához és mezőfeltételként való használatához egy segéd lekérdezést kell használnia, az alábbi eljárásnak megfelelően:

  1. Nyissa meg a Northwind.accdb fájlt, és engedélyezze annak tartalmát.

  2. Zárja be a bejelentkezési űrlapot.

  3. Kattintson a Létrehozás lap Egyéb csoportjában a Lekérdezéstervező gombra.

  4. A Táblák lapon kattintson duplán az Orders and Employees (Rendelések és alkalmazottak) elemre.

  5. A Rendelések táblában kattintson duplán az Alkalmazott azonosítója mezőre, a Rendelésazonosító mezőre és a Rendelés dátuma mezőre, hogy hozzáadja őket a lekérdezés tervezőrácsához. Az Alkalmazottak táblában kattintson duplán a Beosztás mezőre a tervezőrácshoz való hozzáadásához.

  6. Kattintson a jobb gombbal az Alkalmazott azonosítója oszlop Feltétel sorára, majd kattintson a helyi menü Nagyítás parancsára.

  7. A Nagyítás mezőbe írja be vagy illessze be a következő kifejezést:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    Ez az al lekérdezés. Kiválasztja az összes olyan alkalmazotti azonosítót, ahol az alkalmazott nem rendelkezik Értékesítési képviselő beosztással, és a fő lekérdezésre beállított eredményt adja meg. A fő lekérdezés ezután ellenőrzi, hogy a Rendelések tábla alkalmazotti azonosítói szerepelnek-e az eredményhalmazban.

  8. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

    A lekérdezés lefut, és a lekérdezés eredménye megjeleníti azoknak a rendeléseknek a listáját, amelyeket nem értékesítési képviselők dolgoztak fel.

Vissza a lap tetejére

Gyakori SQL-kulcsszavak, amelyeket a segéd lekérdezésekkel használhat

Több SQL-kulcsszót is használhat a segéd lekérdezésekkel:

Megjegyzés: Ez a lista nem teljes. Az adatdefiníciós kulcsszavak kivételével bármilyen érvényes SQL-kulcsszót használhat a segéd lekérdezésekben.

  • MINDEN    A WHERE záradékban használja az ALL függvényt a feltételnek megfelelő sorok lekéréséhez, ha összehasonlítja a segéd lekérdezés által visszaadott összes sortal.

    Tegyük fel például, hogy egy főiskolán elemzi a diákok adatait. A diákoknak fenn kell tartaniuk a minimális GPA-t, amely a szaktól a szakig változik. A szakok és a minimális GLA-k tárolása egy Majors nevű táblában történik, a releváns diákadatok pedig egy Student_Records nevű táblában vannak tárolva.

    Azoknak a szakoknak (és azok minimális GLA-jainak) a listájának megtekintéséhez, amelyeknél az adott szakot tanuló diákok száma meghaladja a minimális GPA-t, használja az alábbi lekérdezést:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • BÁRMELY    A WHERE záradékban az ANY használatával lekérheti azokat a sorokat, amelyek megfelelnek a feltételnek az alkérdezés által visszaadott sorok közül legalább egyhez képest.

    Tegyük fel például, hogy egy főiskolán elemzi a diákok adatait. A diákoknak fenn kell tartaniuk a minimális GPA-t, amely a szaktól a szakig változik. A szakok és a minimális GLA-k tárolása egy Majors nevű táblában történik, a releváns diákadatok pedig egy Student_Records nevű táblában vannak tárolva.

    Azoknak a szakoknak (és azok minimális GLA-jainak) listájának megtekintéséhez, amelyek esetében az adott szak bármely hallgatója nem felel meg a minimális GPA-nak, a következő lekérdezést használhatja:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Megjegyzés: A SOME kulcsszót is használhatja ugyanahhoz a célhoz; A SOME kulcsszó az ANY szinonimája.

  • EXISTS     A WHERE záradékban használja a EXISTS függvényt annak jelzésére, hogy egy segéd lekérdezésnek legalább egy sort vissza kell adnia. A EXISTS előtagot a NOT előtaggal is megadhatja, amely azt jelzi, hogy egy alkérdezés nem adhat vissza sorokat.

    Az alábbi lekérdezés például egy olyan terméklistát ad vissza, amely legalább egy meglévő sorrendben található:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    A NOT EXISTS függvény használatával a lekérdezés olyan termékek listáját adja vissza, amelyek legalább egy meglévő sorrendben nem találhatók meg:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Használja az IN függvényt egy WHERE záradékban annak ellenőrzéséhez, hogy a fő lekérdezés aktuális sorában található érték része-e annak a készletnek, amelyet az alkérdezés visszaad. A NOT előtaggal is ellenőrizheti, hogy a fő lekérdezés aktuális sorának egy értéke nem része-e annak a készletnek, amelyet az al lekérdezés visszaad.

    A következő lekérdezés például azoknak a rendeléseknek a listáját adja vissza (rendelési dátumokkal), amelyeket nem értékesítési képviselők dolgoztak fel:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    A NOT IN használatával ugyanezt a lekérdezést is megírhatja így:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Vissza a lap tetejére

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.

Hasznos volt ez az információ?

Mennyire elégedett a fordítás minőségével?
Mi volt hatással a felhasználói élményére?
Ha elküldi a visszajelzést, a Microsoft felhasználja azt a termékei és szolgáltatásai továbbfejlesztéséhez. Az informatikai rendszergazda képes lesz ezeket az adatokat összegyűjteni. Adatvédelmi nyilatkozat.

Köszönjük a visszajelzését!

×