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

Megjegyzés: Szeretnénk, ha minél gyorsabban hozzáférhetne a saját nyelvén íródott súgótartalmakhoz. Ez az oldal gépi fordítással lett lefordítva, ezért nyelvtani hibákat és pontatlanságokat tartalmazhat. A célunk az, hogy ezek a tartalmak felhasználóink hasznára váljanak. Kérjük, hogy a lap alján írja meg, hogy hasznos volt-e az Ön számára az itt található információ. Az eredeti angol nyelvű cikket itt találja.

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.

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

Segédlekérdezés használata egy mezőt adhatnak. 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.

Az aktuális sor, amely nem lehetséges segédlekérdezés használata nélkül más értékek függő értékek megjelenítése egy segédlekérdezés Mezőalias is használhatja. Ha például tudassa velünk lépjen vissza a példában, amelyre kattintva megtekintheti az egyes a termékek rendelések közötti intervallum. Annak megállapításához, ez az időtartam, kell összehasonlítása a más rendelési dátumokat az adott termék egyes rendelve elemre. A Northwind 2007 sablon használatával ezeket az adatokat megjelenítő lekérdezés létrehozása

Jelenjen meg, hogy miként állíthatja be a Northwind 2007 alkalmazásban

  1. Kattintson a Microsoft Office gombra Gombkép , majd az Új parancsra.

  2. A bal oldali ablaktáblában a Sablon kategóriákcsoportban kattintson a Helyi sablonokat.

  3. A Helyi sablonokcsoportban kattintson a Northwind 2007, és kattintson a Létrehozásgombra.

  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. A Létrehozás lap Egyéb csoportjában kattintson a Lekérdezéstervező gombra.

  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.

  9. 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.

    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.

    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 2007.accdb, é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

Office-jártasság 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.

×