A lekérdezés további finomítása az SQL-utasítások szerkesztésével
Applies ToMicrosoft 365-höz készült Access Access 2024 Access 2021 Access 2019 Access 2016

Ha a lekérdezések nem nyújtják a kívánt teljesítményt, akkor néhány alapvető SQL-utasítással tovább finomíthatja őket. Az alábbiakban áttekintünk néhány SQL-utasítástípust és a hozzájuk tartozó záradékokat és részeket, amelyek szerkesztésével esetleg elérhető a kívánt eredmény.

Megjegyzés:  Ez a témakör nem vonatkozik az Access-webappokra, vagyis az Access használatával tervezett és online közzétett adatbázisokra.

Tartalom

Select utasítás létrehozása

Minden SQL-utasításhoz két vagy három záradék tartozik. A SELECT záradék közli az adatbázissal, hogy hol keresse az adatokat, valamint meghatározza a visszaadandó adatok körét.

Megjegyzés:  A SELECT utasításokat mindig pontosvessző (;) zárja le, amely vagy az utolsó záradék végén, vagy az SQL-utasítás utolsó sorát követő külön sorban állhat.

Az alábbi SELECT utasítás arra utasítja az Accesst, hogy olvassa be a Contacts (Névjegyek) táblájának E-mail Address (E-mail cím) és Company (Vállalat) oszlopában található adatokat, mégpedig azokból a sorokból, amelyekben a City (Település) oszlopban „Seattle” szerepel.

SQL-objektumlap SELECT utasítással

A fenti lekérdezésnek három záradéka van: SELECT, FROM és WHERE.

1. A SELECT záradék felsorolja azokat az oszlopokat, amelyekben a használni kívánt adat, valamint egy operátor (SELECT) és két ezt követő azonosító található. Ha egy azonosítóban szóközök vagy más speciális karakterek szerepelnek (például az E-mail Address azonosítóban), az azonosítót szögletes zárójelbe kell tenni.

2. A FROM záradék a forrástáblát azonosítja. Ebben a példában egy operátort (FROM) tartalmaz, amelyet egy azonosító (Contacts) követ.

3. A WHERE záradék megadása nem kötelező. A példában egy operátort (WHERE) tartalmaz, amelyet egy kifejezés (City="Seattle") követ.

A lekérdezések kiválasztásával kapcsolatos további információkért lásd: Egyszerű választó lekérdezés létrehozása.

A leggyakoribb SQL-záradékok listája az alábbi:

SQL-záradék neve

Rendeltetés

Kötelező ?

SELECT

A vizsgált adatokat tartalmazó mezőket sorolja fel.

Igen

FROM

A SELECT záradékban felsorolt mezőket tartalmazó táblákat sorolja fel.

Igen

WHERE

Meghatározza azokat a mezőfeltételeket, amelyek alapján az egyes rekordok bekerülnek az eredmények közé.

Nem

ORDER BY

Megadja az eredmények rendezésének módját.

Nem

GROUP BY

Az összegző függvényeket tartalmazó SQL-utasításokban felsorolja azokat a mezőket, amelyek a SELECT záradékban nem szerepeltek.

Csak ha létezik ilyen mező

HAVING

Összegző függvényeket tartalmazó SQL-utasításokban megadja a SELECT utasításban összegzett mezőkre vonatkozó feltételeket.

Nem

Mindegyik SQL-záradék kifejezésekből áll. Az alábbi lista bemutat néhány gyakori SQL-kifejezést.

SQL-kifejezés

Definíció

Példa

azonosító

Egy adatbázis-objektum, például oszlop azonosítására szolgáló név.

[E-mail cím] és Vállalat

operátor

Műveletet jelző vagy azt módosító kulcsszó.

AS

állandó (konstans)

Nem változó érték, például egy szám, vagy a NULL.

42

kifejezés

Azonosítók, operátorok, állandók és függvények kombinációja, amellyel értéket ad egy számnak.

>= Termékek.[Egységár]

Vissza a lap tetejére

A SELECT záradék testreszabása

Testreszabás

Példa

Csak a különböző értékek megjelenítése.

Használja a DISTINCT kulcsszót a SELECT záradékban.

Ha például vevői különböző fiókirodákból származnak, és közülük többnek megegyezik a telefonszáma, de Ön mindegyik telefonszámot csak egyszer szeretné megjeleníteni, a következőhöz hasonló SELECT záradékot alkalmazhat:

SELECT DISTINCT [txtCustomerPhone] 

Az azonosító megjelenésének módosítása, hogy könnyebben lehessen olvasni az Adatlap nézetben.

A SELECT záradékban használja az AS operátort (műveletet megjelenítő vagy módosító kulcsszó) mezőaliasszal. A mezőalias egy név, amelyet az eredmények olvashatóbbá tétele érdekében rendel hozzá a mezőhöz.

SELECT [txtCustPhone] AS [Customer Phone]

A FROM záradék testreszabása

A testreszabás célja

Példa

Táblaalias, azaz másik név hozzárendelése a táblákhoz a SELECT utasításban. A táblaaliasokat akkor érdemes alkalmazni, ha a táblák nevei hosszúak, de még inkább akkor, ha a különböző táblákban egyező nevű mezők vannak.

Ha két mezőből szeretné összegyűjteni az adatokat, és mindkét mező neve ID, de az egyik a tblCustomer nevű táblából, a másik a tblOrder nevű táblából származik:

SELECT [tblCustomer].[ID],        [tblOrder].[ID]

Az AS operátorral táblaaliasokat határozhat meg a FROM záradékban:

FROM [tblCustomer] AS [C],      [tblOrder] AS [O] 

Ezeket a táblaaliasokat ezután felhasználhatja a SELECT záradékban az alábbiak szerint:

SELECT [C].[ID],        [O].[ID]

A két adatforrásból származó rekordpárok összevonása illesztésekkel, vagy annak megadása, hogy valamelyik táblából akkor is szerepeljen rekord az eredmények között, ha a kapcsolódó táblában nincs hozzá tartozó rekord.

Illessze a táblákat úgy, hogy a lekérdezés összevonja a táblákból származó elemeket, és kizárja azokat, amelyeknek a másik táblában nincs megfelelője.

A FROM záradék a következőhöz hasonló lehet:

FROM [tblCustomer] INNER JOIN [tblOrder]ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID] 

Az illesztésekkel kapcsolatos tudnivalók

Az illesztéseknek két típusa létezik: belső és külső illesztés. A lekérdezésekben a belső illesztés gyakoribb. Ha belső illesztéssel futtat egy lekérdezést, akkor az eredmények között csak azok a tételek jelennek meg, amelyeknek mindkét illesztett táblájában van közös értéke.

A külső illesztések azt határozzák meg, hogy a lekérdezés figyelembe vegye-e az adatokat, ha nincsenek azonos értékek. A külső illesztések irányítottak, tehát megadható, hogy a lekérdezés az illesztésben megadott első tábla összes rekordját (bal oldali illesztés) vagy az illesztésben megadott második tábla összes rekordját (jobb oldali illesztés) tartalmazza-e. Egy külső illesztésnek a következő az SQL-szintaxisa:

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 = table2.field2

Az illesztések lekérdezésekben való használatáról további információt a Táblák és lekérdezések összekapcsolása című témakörben talál.

Vissza a lap tetejére

A WHERE záradék testreszabása

A WHERE záradékba olyan feltételek foglalhatók, amelyekkel korlátozható a lekérdezés által visszaadott elemek száma. Ezek leírása és működése a lekérdezésfeltételek példáit bemutató témakörben található.

Az alapszintű WHERE záradék testreszabására példa a lekérdezés eredményeinek korlátozása; Tegyük fel, hogy meg szeretné keresni egy ügyfél telefonszámát, és csak a vezetéknevét tudja megjegyezni Bagel néven. Ebben a példában a vezetéknevek egy Vezetéknév mezőben vannak tárolva, így az SQL szintaxisa a következő:

WHERE [LastName]='Bagel'

A WHERE záradékkal olyan oszlopok adatforrásait is egyesítheti, amelyek egymásnak megfeleltethető adatokat tartalmaznak, de az adattípusuk különbözik. Ez a lehetőség azért hasznos, mert a táblák nem illeszthetők különböző adattípusú mezőkön keresztül. Ilyenkor a LIKE kulcsszóval az egyik mezőt a másik mezőre vonatkozó feltételként határozhatja meg. Ha például az Assets (Eszközök) tábla és az Employees (Alkalmazottak) tábla azon adatait szeretné használni, amelyeknél az Assets tábla eszköztípus mezőjében szereplő értékhez az Employees tábla Quantity (Mennyiség) mezőjében a 3-as érték tartozik, akkor a következő WHERE záradékot használhatná:

WHERE field1 LIKE field2

Fontos:  Ha a mező összesítő függvényben szerepel a WHERE záradékon belül, akkor nem határozhatók meg rá feltételek. Az összesített mezőkön a HAVING záradékot kell alkalmazni.

Vissza a lap tetejére

Testreszabás a UNION operátorral

A UNION operátort akkor kell alkalmazni, ha több hasonló választó lekérdezés eredményét összevontan szeretné megjeleníteni. Ha például az adatbázisnak van egy Termékek és egy Szolgáltatások táblája, és mindkettőnek három mezője: kizárólagos ajánlat, illetve termék vagy szolgáltatás, ár, valamint jótállás, illetve garancia. Ebben az esetben a Termékek tábla jótállás mezője és a Szolgáltatások tábla garancia mezője lényegében ugyanazt az információt tartalmazza. Ekkor a két tábla három mezőjét a következőképpen egyesítheti egy egyesítő lekérdezéssel:

SELECT name, price, warranty, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee, exclusive_offer FROM Services;

A lekérdezés futtatásakor az egyes kapcsolódó mezőhalmazok egyetlen kimeneti mezőbe kerülnek. Ha az eredmények között a többször előforduló elemeket is meg szeretné jeleníteni, akkor használja az ALL operátort.

Megjegyzés:  A két SELECT utasításban ugyanannyi kimeneti mezőnek kell lennie, ugyanabban a sorrendben, és a mezőpárok adattípusának meg kell egyeznie vagy egymással kompatibilisnek kell lennie. Egyesítő lekérdezésekben a Szám és a Szöveg adattípus kompatibilisnek számít.

Az egyesítő lekérdezésekről a Több lekérdezés eredményének együttes megjelenítése egyesítő lekérdezéssel című témakörben olvashat bővebben.

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.