Időnként előfordulhat, hogy egy lekérdezés eredményét 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 szeretné látni az egyes termékek rendelése közötti intervallumot. Ha olyan lekérdezést hozna létre, amely megjeleníti ezt az intervallumot, össze kell hasonlítani az egyes rendelési dátumokat az adott termék más rendelési dátumokkal. A rendelési dátumok összehasonlítása lekérdezést is igényel. Ezt a lekérdezést beágyazhatja a fő lekérdezésbe egy segédlekérdezés.

A segédlekérdezéseket beírhatja egy kifejezés sql-utasításba a SQL nézet.

Tartalom

Lekérdezés eredményének használata másik lekérdezés mezőjeként

A segédlekérdezés mező aliasként is használható. A segédlekérdezés mező aliasként akkor használható, ha a segédlekérdezés eredményét mezőként szeretné használni a fő lekérdezésben.

Megjegyzés: A mező aliasaként használt segédlekérdezés nem adhat vissza egynél több mezőt.

A segédlekérdezés mező aliasával megjeleníthet az aktuális sor más értékeitől függő értékeket, amelyek segédlekérdezés nélkül nem lehetségesek.

Például térjen vissza arra a példára, ahol látni szeretné az egyes termékek rendelése közötti intervallumot. Ennek az intervallumnak a meghatározásához össze kell hasonlítani az egyes rendelési dátumokat az adott termék más rendelési dátumokkal. A Northwind adatbázissablonnal létrehozhat olyan lekérdezést, amely megjeleníti ezt az információt.

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

  2. Az Elérhető sablonok csoportbankattintson 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. A Létrehozás lap Lekérdezések csoportjában kattintson a Lekérdezéstervező menügombra.

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

  7. A Termékazonosító és a Rendelés dátuma mezőre duplán kattintva vegye fel őket a lekérdezés tervezőrácsára.

  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 Sorrend 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, és válassza a helyi menü Nagyítás parancsát.

  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édlekérdezés. A segédlekérdezés minden egyes sorban kijelöli a legutóbbi, a sorhoz társított rendelési dátumnál kevésbé friss dátumot. Figyelje meg, hogyan hozhat létre tábla aliast az AS kulcsszóval, így összehasonlíthatja a segédlekérdezés értékeit a fő lekérdezés aktuális sorának értékeivel.

  12. A rács negyedik oszlopának Mező sorában í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 rendelési dátuma közötti intervallumot egy segédlekérdezés használatával meghatározott 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 fut, és megjeleníti a terméknevek, a rendelési dátumok, a korábbi rendelési dátumok és a rendelési dátumok közötti intervallumot. 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 keresési értékeket (ebben az esetben a terméknevet) jeleníti meg a tényleges Termékazonosítók helyett. Bár ez módosítja a megjelenő értékeket, nem módosítja a rendezési sorrendet.

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

Vissza a lap tetejére

Segédlekérdezés használata feltételként a lekérdezésmezőkhöz

A segédlekérdezés használható mező feltételként. A segédlekérdezés mező feltételként akkor használható, ha a segédlekérdezés eredményei alapján korlátozni szeretné a mező által megjeleníthető értékeket.

Tegyük fel például, hogy át szeretné vizsgálni azon megrendelések listáját, amelyek feldolgozását olyan alkalmazottak feldolgozták, akik nem értékesítési képviselő. A lista létrehozásához össze kell hasonlítani az egyes rendelések alkalmazottazonosítóját a nem értékesítési képviselő alkalmazottak azonosítóinak listájával. A lista létrehozásához és mező feltételként való használatához segédlekérdezés szükséges, az alábbi eljárásnak megfelelően:

  1. Nyissa meg a Northwind.accdb fájlját, é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 a Rendelések és az Alkalmazottak elemre.

  5. A Rendelések táblában kattintson duplán az Alkalmazottazonosító, a Rendelésazonosító és a Rendelés dátuma mezőre a lekérdezés tervezőrácsához való hozzáadásukhoz. 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 Alkalmazottazonosító oszlop Feltétel sorára, és válassza a helyi menü Nagyítás parancsát.

  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 a segédlekérdezés. Kiválasztja az összes olyan alkalmazotti azonosítót, amelynél az alkalmazottnak nincs üzletkötői beosztása, és az eredményhalmazt a fő lekérdezéshez adja. A fő lekérdezés ezután ellenőrzi, hogy a Rendelések táblából származó alkalmazottak azonosítói benne vannak-e az eredményhalmazban.

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

    A program futtatja a lekérdezést, és a lekérdezés eredményei között azok a megrendelések vannak felsorolva, amelyek feldolgozását olyan alkalmazottak feldolgozták, akik nem értékesítési képviselő.

Vissza a lap tetejére

A segédlekérdezésekkel használható gyakori SQL-kulcsszavak

A segédlekérdezésekkel számos SQL-kulcsszó használható:

Megjegyzés: Ez a lista nem teljes. A segédlekérdezésben bármilyen érvényes SQL-kulcsszót használhat, kivéve az adatdefiníciós kulcsszavakat.

  • ALL    A WHERE záradékban az ALL záradékkal beolvassa a feltételnek megfelelő sorokat a segédlekérdezés által visszaadott összes sorhoz képest.

    Tegyük fel például, hogy egy egyetem hallgatói adatait elemzi. A diákoknak meg kell tartaniuk egy minimális GPA-t, amely a szaktól függően változik. A szakok és minimális GPA-juk egy Szakok nevű táblázatban található, és a kapcsolódó diákadatokat egy "Szakok" nevű táblázat Student_Records.

    Az alábbi lekérdezéssel láthatja azon szakok (és minimális GPA-k) listáját, akiknél az összes ilyen szakos tanuló meghaladja a minimális GPA-t:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    A WHERE záradékban az ANY záradékot használva beolvassa a feltételnek megfelelő sorokat a segédlekérdezés által visszaadott sorok legalább egyikének összehasonlítva.

    Tegyük fel például, hogy egy egyetem hallgatói adatait elemzi. A diákoknak meg kell tartaniuk egy minimális GPA-t, amely a szaktól függően változik. A szakok és minimális GPA-juk egy Szakok nevű táblázatban található, és a kapcsolódó diákadatokat egy "Szakok" nevű táblázat Student_Records.

    Az alábbi lekérdezéssel láthatja azon szakok (és minimális GPA-k) listáját, amelyekben az adott szakos hallgatók nem teljesítik a minimális GPA-értékeket:

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

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

  • EXISTS     A WHERE záradékban használja az EXISTS záradékot annak jelzésére, hogy egy segédlekérdezésnek legalább egy sort kell visszaadni. Az LÉTEZIK előtaggal a NOT előtaggal is jelezheti, hogy a segédlekérdezés nem ad vissza sorokat.

    Az alábbi lekérdezés például visszaadja a termékek listáját, amelyek legalább egy meglévő megrendelésben találhatók:

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

    A NEM LÉTEZIK függvényt használva a lekérdezés visszaadja azon termékek listáját, amelyek nem találhatók meg legalább egy meglévő megrendelésben:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • KI    Az IN záradékkal ellenőrizheti, hogy a fő lekérdezés aktuális sorában lévő érték része-e a segédlekérdezés által visszaadott halmaznak. Az IN előtaggal az IN előtaggal is ellenőrizheti, hogy a fő lekérdezés aktuális sorában lévő érték nem része-e a segédlekérdezés által visszaadott halmaznak.

    Az alábbi lekérdezés például azokat a megrendeléseket (rendelési dátumokkal együtt), amelyek feldolgozását olyan alkalmazottak feldolgozták, akik nem értékesítési képviselőjék:

    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 a következő módon írhatja meg:

    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?

Ismeretek bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Csatlakozás Microsoft Office Insiderekhez

Hasznos volt az információ?

Mennyire elégedett a fordítás minőségével?
Mi befolyásolta a felhasználói élményét?

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

×