Applies ToMicrosoft 365-höz készült Access Access 2024 Access 2021 Access 2019 Access 2016

A subquery egy SELECT utasítás, amely egy SELECT, SELECT... INTO, INSERT... INTO, DELETE vagy UPDATE utasítást, vagy egy másik alkérdezésen belül.

Szintaxis

A szintaxis három formája használható a segéd lekérdezések létrehozásához:

összehasonlítás [ANY | ALL | SOME] (sqlstatement)

kifejezés [NOT] IN (sqlstatement)

[NEM] EXISTS (sqlstatement)

Az al lekérdezések a következő részekből állnak:

Rész

Leírás

Összehasonlítás

Egy kifejezés és egy összehasonlító operátor, amely összehasonlítja a kifejezést a segéd lekérdezés eredményeivel.

kifejezés

Egy kifejezés, amelyben a rendszer megkeresi az alkérdezés eredményhalmazát.

sqlutasítás

EGY SELECT utasítás, amely ugyanazt a formátumot és szabályokat követi, mint bármely más SELECT utasítás. Zárójelek közé kell tenni.

Megjegyzések

A SELECT utasítás mezőlistájában, illetve a WHERE vagy HAVING záradékban kifejezés helyett segéd lekérdezést is használhat. A segéd lekérdezésekben a SELECT utasítással megadhat egy vagy több konkrét értéket a WHERE vagy HAVING záradék kifejezésben kiértékelendő értékekből.

A szinonima any vagy SOME predikátum használatával lekérheti a fő lekérdezés azon rekordjait, amelyek megfelelnek a segéd lekérdezésben lekért rekordok összehasonlításának. Az alábbi példa az összes olyan terméket adja vissza, amelynek egységára nagyobb, mint bármely 25%-os vagy annál nagyobb kedvezménnyel értékesített terméké:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Az ALL predikátum használatával csak azokat a rekordokat kérje le a fő lekérdezésben, amelyek megfelelnek a segéd lekérdezésben lekért összes rekord összehasonlításának. Ha az előző példában az ANY értéket ALL értékre módosította, a lekérdezés csak azokat a termékeket adja vissza, amelyek egységára nagyobb, mint az összes 25%-os vagy annál nagyobb kedvezménnyel értékesített terméké. Ez sokkal korlátozóbb.

Az IN predikátum használatával csak azokat a rekordokat kérje le a fő lekérdezésben, amelyekhez a segéd lekérdezés egy rekordja egyenlő értéket tartalmaz. Az alábbi példa az összes 25%-os vagy annál nagyobb kedvezményt tartalmazó terméket adja vissza:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Ezzel szemben a NOT IN használatával csak azokat a rekordokat kérdezheti le a fő lekérdezésben, amelyeknél a segéd lekérdezés egyetlen rekordja sem tartalmaz egyenlő értéket.

Használja a EXISTS predikátumot (a nem kötelező NOT fenntartott szóval) igaz/hamis összehasonlításokban annak megállapításához, hogy a segéd lekérdezés visszaad-e rekordokat.

A segéd lekérdezésekben táblanév-aliasokat is használhat, hogy a segéd lekérdezésen kívüli FROM záradékban felsorolt táblákra hivatkozzon. Az alábbi példa azoknak az alkalmazottaknak a nevét adja vissza, akiknek a fizetése egyenlő vagy nagyobb, mint az azonos beosztású alkalmazottak átlagkeresete. Az Employees tábla "T1" aliast kap:

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

Az előző példában az AS foglalt szó nem kötelező megadni.

A kereszttáblás lekérdezésekben bizonyos segéd lekérdezések engedélyezve vannak– konkrétan predikátumokként (a WHERE záradékban lévők). A helyettesítő lekérdezések kimenetként (a SELECT listában lévők) nem engedélyezettek a kereszttáblás lekérdezésekben.

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.