Lekérdezés másik lekérdezésbe vagy kifejezésbe ágyazása segédlekérdezéssel

Fontos : Ez a cikk gépi fordítással lett lefordítva, lásd a jognyilatkozatot. A cikk angol változatát itt találhatja meg.

Bizonyos esetekben szükség lehet egy adott lekérdezés eredményét mezőként használni egy másik lekérdezésben, vagy lekérdezésmező feltételeként alkalmazni. Tegyük fel például, hogy a termékekre vonatkozó rendelések közötti időtartamot kell meghatározni: az időtartamot megjelenítő lekérdezés létrehozásához össze kell hasonlítani a rendelési dátumokat a kérdéses termék egyéb rendelési dátumaival. E dátumok összehasonlításához ugyancsak lekérdezésre van szükség. Ezt a lekérdezést egy segédlekérdezés ágyazhatja be a főlekérdezésbe.

Segédlekérdezést kifejezés vagy SQL nézet SQL-utasításban is létrehozhat.

Megjegyzés :  Ez a témakör nem vonatkozik az Access-alkalmazásokra, vagyis az Access használatával tervezett és online közzétett új típusú adatbázisokra. Ezekről az Access-alkalmazás létrehozása című témakörben olvashat bővebben.

Tartalom

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

Segédlekérdezés használata lekérdezésmező feltételeként

Segédlekérdezésekben használható gyakori SQL-kulcsszavak

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

Egy mezőt adhatnak segédlekérdezés is használhatja. Ha meg szeretné használni a művelethez a segédlekérdezésben eredmények egy mezőt a fő lekérdezés segédlekérdezés használata egy mezőt adhatnak.

Megjegyzés : A mezőaliasként használt segédlekérdezések csak egy mezőt adhatnak eredményül.

A segédlekérdezések mezőaliasaival megjeleníthetők az aktuális sor más értékeitől függő értékek. Segédlekérdezés használata nélkül ez nem lehetséges.

Térjünk vissza például ahhoz a példához, amelyben a termékekre vonatkozó rendelések közötti időtartamot kell meghatározni. Ehhez össze kell hasonlítani az egyes rendelési dátumokat a termékhez tartozó egyéb dátumokkal. A Northwind adatbázissablonnal létrehozható egy olyan lekérdezés, amely ezt az információt jeleníti meg.

A Northwind adatbázis beállítása

  1. Kattintson a Fájl fülre, majd az Új parancsra.

  2. A Használható sablonok csoportban kattintson a Mintasablonok gombra.

  3. Kattintson a Northwind sablonra, 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.

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

  2. A Tábla megjelenítése párbeszédpanelen kattintson a Lekérdezések fülre, majd duplán a Termékrendelések listaelemre.

  3. Zárja be a Tábla megjelenítése párbeszédpanelt.

  4. Duplán a Termékszám és a Rendelve mezőre kattintva vegye fel azokat a lekérdezéstervező táblázatba.

  5. A táblázat Termékszám oszlopának Rendezés sorában válassza a legördülő lista Növekvő elemét.

  6. A táblázat Rendelve oszlopának Rendezés sorában válassza a legördülő lista Csökkenő elemét.

  7. A táblázat harmadik oszlopában kattintson a jobb gombbal a Mező sorra, és válassza a helyi menü Nagyítás parancsát.

  8. 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 alkotja a segédlekérdezést, amely minden sorban kiválasztja azt a legutóbbi rendelési dátumot, amely kevésbé régebbi, mint a sorhoz már hozzárendelt rendelési dátum. Figyelje meg, hogy miként hozható létre táblaalias az AS kulcsszóval annak érdekében, hogy össze lehessen hasonlítani a segédlekérdezésben lévő értékeket a főlekérdezés aktuális sorában lévőkkel.

  1. A táblázat negyedik oszlopának Mező sorában írja be az alábbi kifejezést:

    Interval: [Order Date]-[Prior Date]

Ez a kifejezés a művelethez a segédlekérdezésben definiált korábbi dátumértéket használva kiszámítja az egyes rendelési dátumok közötti időtartamot és a termékhez tartozó korábbi rendelési dátumot.

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

    1. A program futtatja a lekérdezést, majd megjelenít egy listát, amely a termékneveket, a rendelési dátumokat, a korábbi rendelési dátumokat és a rendelési dátumok közötti időtartamot tartalmazza. Az eredmény szűrése először termékszám szerint növekvő sorrendben, majd a rendelés dátuma szerint csökkenő sorrendben történik.

    2. Megjegyzés : Mivel a Termékszám mező egy keresőmező, az Access alapértelmezés szerint a keresési értékeket jeleníti meg (ebben az esetben a termék nevét), nem pedig a tényleges termékszámokat. Noha ez a módszer megváltoztatja a megjelenő értékeket, a rendezési sorrendre nincsen hatással.

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

Vissza a lap tetejére

Segédlekérdezés használata lekérdezésmező feltételeként

Segédlekérdezés mező feltételeként is használhatja. Segédlekérdezés használata mező feltételeként, ha meg szeretné kulcsszóval a segédlekérdezés eredményének használata a határértékekről, amely a mező jeleníti meg.

Tegyük fel például, hogy át kell tekintenie a nem üzletkötőként dolgozó alkalmazottak által feldolgozott rendelések listáját. A lista létrehozásához össze kell vetni az egyes rendelésekhez tartozó alkalmazottkódot a nem üzletkötőként dolgozó alkalmazottak alkalmazottkódjait tartalmazó listával. A lista segédlekérdezést használva hozható létre és alkalmazható mezőfeltételként. Ezt mutatja be a következő eljárás.

  1. Nyissa meg a Northwind nevű adatbázist, és engedélyezze a tartalmát.

  2. Zárja be a bejelentkezési párbeszédpanelt.

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

  4. A Tábla megjelenítése párbeszédpanel Táblák lapján kattintson duplán a Rendelések és az Alkalmazottak listaelemre.

  5. Zárja be a Tábla megjelenítése párbeszédpanelt.

  6. A Rendelések táblában duplán az Alkalmazottkód, a Rendeléskód és a Rendelve mezőre kattintva vegye fel ezt a három mezőt a lekérdezéstervező táblázatba. Az Alkalmazottak táblában a Beosztás mezőre duplán kattintva tegye ugyanezt.

  7. Kattintson a jobb gombbal az Alkalmazottkód oszlop Feltétel sorára, és válassza a helyi menü Nagyítás parancsát.

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

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

    Ez a kifejezés alkotja a segédlekérdezést: minden olyan alkalmazottkódot kijelöl, amely jelzi, hogy az alkalmazott beosztása nem üzletkötő, majd átadja ezt az eredményhalmazt a főlekérdezésnek. Ezt követően a főlekérdezés ellenőrzi, hogy szerepelnek-e a Rendelések táblából származó alkalmazottkódok az eredményhalmazban.

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

    A program futtatja a lekérdezést, annak eredményei pedig felsorolják a nem üzletkötőként dolgozó alkalmazottak által feldolgozott rendeléseket.

Vissza a lap tetejére

Segédlekérdezésekben használható gyakori SQL-kulcsszavak

A segédlekérdezésekben számos SQL-kulcsszó használható.

Megjegyzés : Ez a felsorolás közel sem teljes. Adatdefiniáló kulcsszavak kivételével bármely érvényes SQL-kulcsszó használható a segédlekérdezésekben.

  • ALL:    A WHERE záradékban használt ALL kulcsszóval a segédlekérdezés által visszaadott sorokkal történő összehasonlításkor beolvashatók a feltételnek megfelelő sorok.

    Tegyük fel például, hogy főiskolai hallgatók adatait kell elemezni. A hallgatók kötelesek teljesíteni az előírt tanulmányi átlagot, amely szakonként más és más. A szakokat és a hozzájuk tartozó előírt tanulmányi átlagot egy Szakok nevű tábla tárolja, a kapcsolódó hallgatói adatokat pedig egy Hallgatói_rekordok nevű tábla tartalmazza.

    Az alábbi lekérdezéssel megjeleníthető azoknak a szakoknak (és előírt tanulmányi átlaguknak) a listája, amelyeknek tanulmányi átlagát a kérdéses szakra járó összes hallgató eléri:

    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 használt ANY kulcsszóval a segédlekérdezés által visszaadott sorok közül legalább eggyel történő összehasonlításkor beolvashatók a feltételnek megfelelő sorok.

    Tegyük fel például, hogy főiskolai hallgatók adatait kell elemezni. A hallgatók kötelesek teljesíteni az előírt tanulmányi átlagot, amely szakonként más és más. A szakokat és a hozzájuk tartozó előírt tanulmányi átlagot egy Szakok nevű tábla tárolja, a kapcsolódó hallgatói adatokat pedig egy Hallgatói_rekordok nevű tábla tartalmazza.

    Az alábbi lekérdezéssel megjeleníthető azoknak a szakoknak (és előírt tanulmányi átlaguknak) a listája, amelyeknek tanulmányi átlagát a kérdéses szakra járó valamely hallgató nem éri el:

    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ó ugyanerre a célra használható, mert az ANY kulcsszó szinonimája.

  • EXISTS:    A WHERE záradékban használt EXISTS kulcsszó azt jelzi, hogy a szóban forgó segédlekérdezésnek legalább egy sort vissza kell adnia. Az EXISTS kulcsszó előtt a NOT kulcsszó is állhat, így jelezve, hogy a segédlekérdezésnek egy sort sem szabad visszaadnia.

    Az alábbi lekérdezés például azoknak a termékeknek a listáját adja eredményül, amelyek legalább egy meglévő rendelésben szerepelnek:

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

    A NOT EXISTS kifejezést megadva a lekérdezés azokat a termékeket adja eredményül, amelyek egy meglévő rendelésnek sem részei:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN:    A WHERE záradékban használt IN kulcsszóval azt ellenőrizheti, hogy a főlekérdezés aktuális sorában lévő adott érték része-e a segédlekérdezés által visszaadott eredményhalmaznak. Az IN kulcsszót is megelőzheti a NOT előtag, jelezve, hogy a főlekérdezés aktuális sorának adott értéke nem része a segédlekérdezés által visszaadott eredményhalmaznak.

    A következő lekérdezés például a nem üzletkötőként dolgozó alkalmazottak által feldolgozott rendelések listáját jeleníti meg a rendelési dátumokkal együtt:

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

    A NOT IN kulcsszópárral ugyanez a lekérdezés így néz ki:

    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

Megjegyzés : Gépi fordítás jognyilatkozata: Ez a cikk számítógép által, emberi közreműködés nélkül lett lefordítva. A Microsoft ezeket a gépi fordításokat azért nyújtja, hogy az angol nyelvet nem beszélők minél több tartalomhoz tudjanak hozzáférni a Microsoft termékeivel, szolgáltatásaival és technológiáival kapcsolatban. A gépi fordítás miatt előfordulhat, hogy a szöveg szóhasználati, szintaktikai vagy helyesírási hibákat tartalmaz.

Ismeretek bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Részvétel az Office Insider programban

Hasznos volt az információ?

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

Köszönjük visszajelzését. Jobbnak látjuk, ha az Office egyik támogatási szakemberéhez irányítjuk.

×